I’ve recently setting up a bunch of hosts with a new Amanda backup server. I like to see, though, how much space each server that I’m backing up uses. Amanda stores a bunch of info in the ‘curinfo’ directory for each host and disk that is being backed up, but I haven’t found any good tools for querying or displaying that. So, I wrote my own. This script looks through all of the files in the ‘curinfo’ directory, and prints out a summary of how much space each disk/host is taking up:
#!/usr/bin/perl
## View Amanda disk space usage per host/disk
## Author: Brandon Checketts
## Website: https://avazio.com/
$curinfo_dir = "/etc/amanda/avazio/curinfo";
opendir(DH, $curinfo_dir);
while($host = readdir(DH)) {
next if($host =~ m/^./);
if( -d "$curinfo_dir/$host") {
opendir(DH2, "$curinfo_dir/$host");
while($disk = readdir(DH2)) {
next if($disk =~ m/^./);
if( -f "$curinfo_dir/$host/$disk/info") {
open(FH, "< $curinfo_dir/$host/$disk/info");
while(my $line = ) {
if($line =~ m/^history: ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)/) {
## Example line: history: 1 2319760 2319760 1184766354 1121
## Line format: history [lvl] [rawsize] [compsize] [timestamp] [unk?]
$space->{$host}->{$disk}->{'rawsize'} += ($2 / 1024);
$space->{$host}->{$disk}->{'compsize'} += ($3 / 1024);
}
}
}
}
closedir(DH2)
}
}
closedir(DH);
$grandtotal_rawsize = 0;
$grandtotal_compsize = 0;
foreach my $host (keys(%{$space})) {
print "n$hostn";
$thishost = $space->{$host};
$thishost_rawsize = 0;
$thishost_compsize = 0;
foreach my $disk (keys(%{$thishost})) {
$thisdisk = $space->{$host}->{$disk};
$thishost_rawsize += $thisdisk->{'rawsize'};
$thishost_compsize += $thisdisk->{'compsize'};
$grandtotal_rawsize += $thisdisk->{'rawsize'};
$grandtotal_compsize += $thisdisk->{'compsize'};
$disk =~ s/_///g;
printf(" %-40s %-6i Mb %-6i Mb\\n", $disk, $thisdisk->{'rawsize'}, $thisdisk->{'compsize'});
}
printf(" TOTAL: %-6i Mb %-6i Mb\\n", $thishost_rawsize, $thishost_compsize);
}
printf("GRAND TOTAL: %-6i MB %-6i MB\\n", $grandtotal_rawsize, $grandtotal_compsize);