ディスクスペースの使用が最も成長した場所を検出するためのdu出力をdiff du出力する標準的な方法はありますか
質問
私は開発者の小さなチームと協力して、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」で保存)と比較し、別の使用情報を印刷して、現在の使用情報を保存します。
あなたがそれが好きなら、それを取ってください。
お役に立てれば。
所属していません StackOverflow