ディスクスペースの使用が最も成長した場所を検出するためのdu出力をdiff du出力する標準的な方法はありますか

StackOverflow https://stackoverflow.com/questions/1533593

  •  20-09-2019
  •  | 
  •  

質問

私は開発者の小さなチームと協力して、UNIXファイルシステムを共有して、やや大きなデータセットを保存しています。このファイルシステムにはやや禁止的な割り当てがあります。そのため、月に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」で保存)と比較し、別の使用情報を印刷して、現在の使用情報を保存します。

あなたがそれが好きなら、それを取ってください。

お役に立てれば。

他のヒント

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

あなたが本当に本当に欲しいのは素晴らしいです Kdirstat.

完全性のために、私も見つけました Du-diff そして、他の答えで言及されているのを見ないでください。 AndrewのDiff-Du(別の答えで言及)は、これよりも進んでいるようです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top