2

我与一个小型开发团队合作,我们共享一个 unix 文件系统来存储较大的数据集。这个文件系统有一个有点令人望而却步的配额,所以大约每月一次,我们必须弄清楚我们的可用空间去了哪里,看看我们可以恢复什么。

显然,我们使用了相当数量的 du,但这仍然是一个乏味的过程。我认为我们可以保持上个月的产出,并将其与本月进行比较,看看我们在哪里增长最多。我猜这个计划不是很原始。

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

谢谢。

4

4 回答 4

2

我编写了一个名为diff-du的程序来执行此操作。我不敢相信没有人已经这样做了!无论如何,我觉得它很有用,我希望你也会。

于 2013-04-22T20:50:36.020 回答
1

你真正想要的是很棒的kdirstat

于 2009-10-07T19:25:58.707 回答
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'中)进行比较,打印不同并保存当前使用信息。

如果你喜欢它,就拿走它。

希望这可以帮助。

于 2009-10-17T14:14:17.160 回答
0

为了完整起见,我还发现了du-diff并且在任何其他答案中都没有提到它。安德鲁的 diff-du (在另一个答案中提到)似乎比这个更先进。

于 2014-06-01T12:45:29.440 回答