Есть ли стандартный способ дифференциальных выходов, чтобы обнаружить, где использование дискового пространства увеличилось больше всего
Вопрос
Я работаю с небольшой командой разработчиков, где мы делимся файловой системой Unix для хранения несколько больших наборов данных. Эта файловая система имеет несколько непомерную квоту, поэтому примерно раз в месяц мы должны выяснить, куда ушло наше свободное пространство, и посмотреть, что мы можем восстановить.
Очевидно, мы используем DU достаточную сумму, но это все еще утомительный процесс. У меня была мысль, что мы сможем поддерживать выходные в последние месяцы в DU и сравнить его с этим месяцами, чтобы увидеть, где у нас был наибольший рост. Я думаю, этот план не очень оригинальный.
Имея это в виду, я спрашиваю, есть ли какие -нибудь сценарии, которые уже делают это.
Спасибо.
Решение
Я действительно не знаю, есть ли стандартный способ, но мне это нужно когда -нибудь назад, и я написал небольшой скрипт 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 И не видите его упомянутого в любом другом ответе. Diff-Du Эндрю (упомянутый в другом ответе) кажется более продвинутым, чем этот.