2

私は開発者の小さなチームと協力して、UNIXファイルシステムを共有してやや大きなデータセットを保存しています。このファイルシステムにはやや法外な割り当てがあるため、月に1回程度、空き領域がどこに移動したかを把握し、何を回復できるかを確認する必要があります。

明らかに、私たちはかなりの量を使用していますが、これはまだ退屈なプロセスです。私は、先月の生産量を維持し、今月と比較して、最も成長した場所を確認できるかもしれないと考えていました。私の推測では、この計画はあまり独創的ではありません。

これを念頭に置いて、すでにこれを行っているスクリプトがあるかどうかを尋ねています。

ありがとう。

4

4 に答える 4

2

これを行うためのdiff-duというプログラムを作成しました。誰もこれをやったことがないなんて信じられない!とにかく、私はそれが便利だと思います。あなたもそうしてくれることを願っています。

于 2013-04-22T20:50:36.020 に答える
1

標準的な方法があるかどうかは本当にわかりませんが、いつか必要になり、それを処理するための小さなperlスクリプトを作成しました。これが私のコードの一部です:

#!/usr/bin/perl

$FileName = "du-previous";
$Location = ">";
$Sizes;

# Current +++++++++++++++++++++++++++++
$Current = `du "$Location"`;
open my $CurrentFile, '<', \$Current;
while (<$CurrentFile>) {
    chomp;
    if (/^([0-9]+)[ \t]+(.*)$/) {
        $Sizes{$2} = $1;
    }
}
close($CurrentFile);

# Previous ++++++++++++++++++++++++++++
open(FILE, $FileName);
while (<FILE>) {
    chomp;
    if (/^([0-9]+)[ \t]+(.*)$/) {
        my $Size = $Sizes{$2};
        $Sizes{$2} = $Size - $1;
    }
}
close(FILE);

# Show result +++++++++++++++++++++++++
SHOW: while (($key, $value) = each(%Sizes)) {
    if ($value == 0) {
        next SHOW;
    }

    printf("%-10d %s\n", $value, $key);
}
close(FILE);

#Save Current +++++++++++++++++++++++++
open my $CurrentFile, '<', \$Current;
open(FILE, ">$FileName");
while (<$CurrentFile>) {
    chomp;
    print FILE $_."\n";
}
close($CurrentFile);
close(FILE);

コードはあまりエラー耐性がないので、調整することができます。

基本的に、コードは、現在のディスク使用量情報を取得し、サイズを最後に実行された時間(「du-previous」に保存)と比較し、異なるものを印刷して、現在の使用量情報を保存します。

あなたがそれを好きなら、それを取りなさい。

お役に立てれば。

于 2009-10-17T14:14:17.160 に答える
1

本当に欲しいのは素晴らしいkdirstatです。

于 2009-10-07T19:25:58.707 に答える
0

For completeness, I've also found du-diff and don't see it mentioned in any other answer. Andrew's diff-du (mentioned in another answer) seems to be more advanced that this one.

于 2014-06-01T12:45:29.440 に答える