use ArchiveSplit in Mb everywhere
[BackupPC.git] / bin / BackupPC_dump
index 243be55..cc633f9 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/perl
+#!/usr/bin/perl
 #============================================================= -*-perl-*-
 #
 # BackupPC_dump: Dump a single client.
@@ -59,7 +59,7 @@
 #   Craig Barratt  <cbarratt@users.sourceforge.net>
 #
 # COPYRIGHT
-#   Copyright (C) 2001-2007  Craig Barratt
+#   Copyright (C) 2001-2009  Craig Barratt
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -77,7 +77,7 @@
 #
 #========================================================================
 #
-# Version 3.2.0beta0, released 17 Jan 2009.
+# Version 3.2.0, released 31 Jul 2010.
 #
 # See http://backuppc.sourceforge.net.
 #
@@ -327,6 +327,7 @@ if ( !$opts{i} && !$opts{f} && $Conf{BlackoutGoodCnt} >= 0
                     || !defined($p->{hourBegin})
                     || !defined($p->{hourEnd})
                 );
+        my $matchWday = $wday;
         if ( $p->{hourBegin} > $p->{hourEnd} ) {
             $blackout = $p->{hourBegin} <= $currHours
                           || $currHours <= $p->{hourEnd};
@@ -336,14 +337,14 @@ if ( !$opts{i} && !$opts{f} && $Conf{BlackoutGoodCnt} >= 0
                 # 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 );
+                $matchWday--;
+                $matchWday += 7 if ( $matchWday < 0 );
             }
         } else {
             $blackout = $p->{hourBegin} <= $currHours
                           && $currHours <= $p->{hourEnd};
         }
-        if ( $blackout && grep($_ == $wday, @{$p->{weekDays}}) ) {
+        if ( $blackout && grep($_ == $matchWday, @{$p->{weekDays}}) ) {
 #           print(LOG $bpc->timeStamp, "skipping because of blackout"
 #                      . " (alive $StatusHost{aliveCnt} times)\n");
             print(STDERR "Skipping $client because of blackout\n")
@@ -622,6 +623,7 @@ $NeedPostCmd = 1;
 #
 # Now backup each of the shares
 #
+my $shareDuplicate = {};
 for my $shareName ( @$ShareNames ) {
     local(*RH, *WH);
 
@@ -631,11 +633,17 @@ for my $shareName ( @$ShareNames ) {
     $shareName = encode("utf8", $shareName);
     $stat{xferOK} = $stat{hostAbort} = undef;
     $stat{hostError} = $stat{lastOutputLine} = undef;
-    if ( -d "$Dir/new/$shareName" ) {
+    if ( $shareName eq "" ) {
+        print(LOG $bpc->timeStamp,
+                  "unexpected empty share name skipped\n");
+        next;
+    }
+    if ( $shareDuplicate->{$shareName} ) {
         print(LOG $bpc->timeStamp,
                   "unexpected repeated share name $shareName skipped\n");
         next;
     }
+    $shareDuplicate->{$shareName} = 1;
 
     UserCommandRun("DumpPreShareCmd", $shareName);
     if ( $? && $Conf{UserCmdCheckStatus} ) {
@@ -914,6 +922,10 @@ for my $shareName ( @$ShareNames ) {
         #
         last;
     }
+    #
+    # Wait for any child processes to exit
+    #
+    # 1 while ( wait() >= 0 );
 }
 
 #
@@ -1005,6 +1017,8 @@ print(LOG $bpc->timeStamp,
 
 BackupExpire($client);
 
+UserCommandRun("DumpPostFinishCmd"); # XXX ASA search integration
+
 print("$type backup complete\n");
 
 ###########################################################################