Есть ли стандартный способ дифференциальных выходов, чтобы обнаружить, где использование дискового пространства увеличилось больше всего

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

  •  20-09-2019
  •  | 
  •  

Вопрос

Я работаю с небольшой командой разработчиков, где мы делимся файловой системой 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 Эндрю (упомянутый в другом ответе) кажется более продвинутым, чем этот.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top