#!/usr/bin/perl -w use strict; no utf8; use lib "/usr/local/BackupPC/lib"; use DBI; use BackupPC::Lib; use BackupPC::Search; use Data::Dumper; my $bpc = BackupPC::Lib->new || die "can't create BackupPC::Lib"; my %Conf = $bpc->Conf(); my $tar_dir = $Conf{GzipTempDir}; %BackupPC::Search::Conf = %Conf; #die(Dumper(\%Conf)); my $dsn = $Conf{SearchDSN} || die "need searchdsn in config.pl\n"; my $user = $Conf{SearchUser} || ''; my $dbh = DBI->connect($dsn, $user, "", { raiseerror => 1, autocommit => 0 }); my $sql = q{ SELECT hosts.name AS host, shares.name AS share, backups.num AS num, MAX(archive_burned.copy) FROM backups INNER JOIN hosts ON (hosts.id=backups.hostid) INNER JOIN shares ON (shares.id=backups.shareid) INNER JOIN archive_backup ON (archive_backup.backup_id=backups.id) INNER JOIN archive_burned ON (archive_burned.archive_id=archive_backup.archive_id) GROUP BY 1, 2, 3 HAVING MAX(archive_burned.copy)>=2; }; my $sth = $dbh->prepare($sql); my $totalRemoved = 0; $sth->execute(); while (my $row = $sth->fetchrow_hashref()) { my $filename = BackupPC::Search::getGzipName($row->{'host'}, $row->{'share'}, $row->{'num'}); $filename .= ".tar.gz"; $filename = $tar_dir . "/" . $filename; my $fs_size = (stat($filename))[7]; $totalRemoved += $fs_size; print "removing $filename... size: $fs_size\n"; # if (system("rm $filename") != 0) { # print "ERROR: unable to remove $filename.\n"; # } } print "Finished. Freed $totalRemoved bytes (".($totalRemoved/(1024*1024))."MB\n"; $sth->finish(); $dbh->disconnect();