X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=bin%2FBackupPC_dump;h=23720cac33c358a9af97fd27d700a7f8cc3e1fbf;hp=11fc3db3bb2bcb182ea438d8e53b93edd87abf1b;hb=2c14784ad71874ec850d189060fe63d6eb9eba95;hpb=72b87b178ae8dcc10f1ae0f441d13e30d5f1ecf1 diff --git a/bin/BackupPC_dump b/bin/BackupPC_dump index 11fc3db..23720ca 100755 --- a/bin/BackupPC_dump +++ b/bin/BackupPC_dump @@ -1,4 +1,4 @@ -#!/bin/perl -T +#!/bin/perl #============================================================= -*-perl-*- # # BackupPC_dump: Dump a single client. @@ -70,7 +70,7 @@ # #======================================================================== # -# Version 2.1.0_CVS, released 3 Jul 2003. +# Version 2.1.0_CVS, released 8 Feb 2004. # # See http://backuppc.sourceforge.net. # @@ -270,6 +270,7 @@ my($needLink, @Backups, $type, $lastBkupNum, $lastFullBkupNum); my $lastFull = 0; my $lastIncr = 0; my $partialIdx = -1; +my $partialNum; if ( $Conf{FullPeriod} == -1 && !$opts{f} && !$opts{i} || $Conf{FullPeriod} == -2 ) { @@ -280,11 +281,32 @@ if ( !$opts{i} && !$opts{f} && $Conf{BlackoutGoodCnt} >= 0 && $StatusHost{aliveCnt} >= $Conf{BlackoutGoodCnt} ) { my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my($currHours) = $hour + $min / 60 + $sec / 3600; - if ( $Conf{BlackoutHourBegin} <= $currHours - && $currHours <= $Conf{BlackoutHourEnd} - && grep($_ == $wday, @{$Conf{BlackoutWeekDays}}) ) { + my $blackout; + # + # Allow blackout to span midnight (specified by BlackoutHourBegin + # being greater than BlackoutHourEnd) + # + if ( $Conf{BlackoutHourBegin} > $Conf{BlackoutHourEnd} ) { + $blackout = $Conf{BlackoutHourBegin} <= $currHours + || $currHours <= $Conf{BlackoutHourEnd}; + if ( $currHours <= $Conf{BlackoutHourEnd} ) { + # + # This is after midnight, so decrement the weekday for the + # weekday check (eg: Monday 11pm-1am means Monday 2300 to + # Tuesday 0100, not Monday 2300-2400 plus Monday 0000-0100). + # + $wday--; + $wday += 7 if ( $wday < 0 ); + } + } else { + $blackout = $Conf{BlackoutHourBegin} <= $currHours + && $currHours <= $Conf{BlackoutHourEnd}; + } + if ( $blackout && grep($_ == $wday, @{$Conf{BlackoutWeekDays}}) ) { # print(LOG $bpc->timeStamp, "skipping because of blackout" # . " (alive $StatusHost{aliveCnt} times)\n"); + print(STDERR "Skipping $client because of blackout\n") + if ( $opts{v} ); NothingToDo($needLink); } } @@ -319,6 +341,7 @@ for ( my $i = 0 ; $i < @Backups ; $i++ ) { if ( $lastIncr < $Backups[$i]{startTime} ); } elsif ( $Backups[$i]{type} eq "partial" ) { $partialIdx = $i; + $partialNum = $Backups[$i]{num}; } } @@ -384,7 +407,7 @@ if ( !defined($XferLOG) ) { print("dump failed: unable to open/create $Dir/XferLOG$fileExt\n"); exit(1); } -$XferLOG->writeTeeStdout(1) if ( $opts{v} ); +$XferLOG->writeTeeStderr(1) if ( $opts{v} ); unlink("$Dir/NewFileList"); my $startTime = time(); @@ -499,6 +522,7 @@ for my $shareName ( @$ShareNames ) { open(STDERR, ">&STDOUT"); close(STDIN); open(STDIN, "<&RH"); + alarm(0); exec("$BinDir/BackupPC_tarExtract", $client, $shareName, $Conf{CompressLevel}); print(LOG $bpc->timeStamp, @@ -537,6 +561,7 @@ for my $shareName ( @$ShareNames ) { compress => $Conf{CompressLevel}, XferMethod => $Conf{XferMethod}, pidHandler => \&pidHandler, + partialNum => $partialNum, }); if ( !defined($logMsg = $xfer->start()) ) {