use DateTime::Duration to correctly convert partial dates in to fields
[BackupPC.git] / bin / BackupPC_ASA_ArchiveStart
index f9372fd..f91a60f 100755 (executable)
@@ -94,24 +94,17 @@ if ( !defined($Hosts->{$ArchiveHost}) ) {
 }
 $bpc->ConfigRead($ArchiveHost);
 
 }
 $bpc->ConfigRead($ArchiveHost);
 
-if ( ! @HostFilter ) {
-       @HostFilter = keys %$Hosts;
-}
+my(@HostList, @BackupList);
 
 
-warn "archiving hosts ",dump(@HostFilter);
 
 
-my(@HostList, @BackupList);
-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;
-    }
+my $host_nums;
+
+foreach my $host ( keys %$Hosts ) {
+       my @backups = $bpc->BackupInfoRead($host);
+       if ( !@backups ) {
+               warn "$0: host $host doesn't have any backups... skipping\n";
+               next;
+       }
 
        my $all_backup_numbers;
        $all_backup_numbers->{ $_->{num} }++ foreach @backups;
 
        my $all_backup_numbers;
        $all_backup_numbers->{ $_->{num} }++ foreach @backups;
@@ -127,20 +120,47 @@ foreach ( @HostFilter ) {
                0;
        }
 
                0;
        }
 
-       warn "# $host all_backup_numbers = ",dump($all_backup_numbers) if $debug;
+       warn "# $host all_backup_numbers = ",dump($all_backup_numbers),"\n";
 
 
-       my @backup_nums = 
+       $host_nums->{$host} = [
                sort
                grep { $all_backup_numbers->{$_} }
                sort
                grep { $all_backup_numbers->{$_} }
-               keys %$all_backup_numbers;
+               keys %$all_backup_numbers
+       ];
+}
 
 
-       foreach my $num ( @backup_nums ) {
+foreach ( @HostFilter ) {
+       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);
                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;
 $dbh->disconnect;
 
 my $ReqFileName;