题
我与一个小型开发人员合作,在那里我们共享一个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”中),打印不同的时间并保存当前的使用信息。
如果您喜欢,请接受。
希望这可以帮助。
不隶属于 StackOverflow