use lib "/usr/local/BackupPC/lib";
use Getopt::Std;
use BackupPC::Lib;
+use BackupPC::Search;
-use DBI;
use Data::Dump qw(dump);
+my $debug = $ENV{DEBUG} || 0;
+
die("BackupPC::Lib->new failed\n") if ( !(my $bpc = BackupPC::Lib->new) );
my %opts;
my %Conf = $bpc->Conf();
-my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 });
+my $dbh = BackupPC::Search::get_dbh;
my $sth = $dbh->prepare(qq{
select
backups.id as backup_id,
hosts.name as host,
- backups.num as num
+ backups.num as num,
+ inc_size,
+ size,
+ inc_deleted
from backups
join hosts on hosts.id = hostid
- where hosts.name = ? and inc_size < 0 and size > 0 and not inc_deleted
+ where hosts.name = ?
});
my $Hosts = $bpc->HostInfoRead();
}
$bpc->ConfigRead($ArchiveHost);
-if ( ! @HostFilter ) {
- @HostFilter = keys %$Hosts;
-}
+my(@HostList, @BackupList);
-warn "archiving hosts ",dump(@HostFilter);
-my(@HostList, @BackupList);
+my $host_nums;
+
+foreach my $host ( keys %$Hosts ) {
+ $host = lc $host;
+ my @backups = $bpc->BackupInfoRead($host);
+ if ( !@backups ) {
+ warn "$0: host $host doesn't have any backups... skipping\n";
+ next;
+ }
+ $host_nums->{$host} = [ BackupPC::Search::host_backup_nums( $host ) ];
+}
+
foreach ( @HostFilter ) {
- my ($host,$num) = split(/:/,$_,2);
- if ( !defined($Hosts->{$host}) ) {
- print(STDERR "$0: host $host doesn't exist... quitting\n");
- exit(1);
- }
- my @backups = $bpc->BackupInfoRead($host);
- if ( !@backups ) {
- warn "$0: host $host doesn't have any backups... skipping\n";
- next;
- }
-
- $sth->execute( $host );
- if ( $sth->rows == 0 ) {
- warn "no backups to archive on $host\n";
- push @HostList, $host;
- push @BackupList, 0; # fake, but will make full-text update
- }
-
- while ( my $row = $sth->fetchrow_hashref ) {
- warn "+ ", $row->{host}, " ", $row->{num}, "\n";
- push(@HostList, $host);
- push(@BackupList, $row->{num});
- }
+ my ($host,$num) = split(/:/,$_,2);
+ if ( !defined($Hosts->{$host}) ) {
+ print(STDERR "$0: host $host doesn't exist... quitting\n");
+ exit(1);
+ }
+ if ( defined $num ) {
+ warn "+ $host $num\n";
+ push(@HostList, $host);
+ push(@BackupList, $num);
+ } else {
+ foreach my $num ( @{ $host_nums->{$host} } ) {
+ warn "+ $host $num\n";
+ push(@HostList, $host);
+ push(@BackupList, $num);
+ }
+ }
+}
+
+if ( ! @HostFilter ) {
+ foreach my $host ( keys %$host_nums ) {
+ foreach my $num ( @{ $host_nums->{$host} } ) {
+ warn "+ $host $num\n";
+ push(@HostList, $host);
+ push(@BackupList, $num);
+ }
+ }
}
+warn "# HostList=",dump(@HostList),"\n";
+warn "# BackupList=",dump(@BackupList),"\n";
+
$dbh->disconnect;
my $ReqFileName;