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: http://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);