我与一个小型开发人员合作,在那里我们共享一个UNIX文件系统来存储一些大型数据集。该文件系统上的配额有些过分,因此大约每月一次,我们必须弄清楚我们的自由空间已经去了哪里,看看我们可以恢复什么。

显然,我们使用了很多数量,但这仍然是一个乏味的过程。我以为我们可能能够将最后几个月的输出与本月进行比较,以查看我们的增长最多。我的猜测这个计划不是很原始。

考虑到这一点,我问是否有任何脚本已经这样做。

谢谢。

有帮助吗?

解决方案

我真的不知道是否有标准方法,但我需要它的某个时候,我写了一个小的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