From 3c547da0c171d7a0cd2cfbf825fd3fcb8b0bc340 Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Mon, 2 Jun 2008 06:43:56 +0000
Subject: [PATCH] Don't mix output from clean op and the backup.  Only clone
 good backups.

---
 backup-one-task | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

diff --git a/backup-one-task b/backup-one-task
index a8a7751..8559c10 100755
--- a/backup-one-task
+++ b/backup-one-task
@@ -72,6 +72,7 @@ excl_abs="$base"/exclude.abs
 age="$base"/age
 files="$base"/files
 rdifflogfile="$base"/rdiff-backup.out
+rdiffcleanlogfile="$base"/rdiff-clean-backup.out
 summaryfile="$base"/backup-summary.txt
 lockdir="$base"/lock
 state="$lysrdiff"/state
@@ -146,7 +147,7 @@ then
         --null-separator \
         --force \
         -v 2 \
-        "$files" > "$rdifflogfile" 2>&1
+        "$files" > "$rdiffcleanlogfile" 2>&1
 fi
 
 if [ $only_prune = 1 ]
@@ -201,7 +202,7 @@ then
         --include-globbing-filelist "$excl_abs" \
         --remote-schema "$schema" \
         --force \
-        "$server"::"$serverpath" "$files" >> "$rdifflogfile" 2>&1
+        "$server"::"$serverpath" "$files" > "$rdifflogfile" 2>&1
     exit=$?
 
     echo -ne "${CLR}"
@@ -255,7 +256,8 @@ then
     
         rm -f "$base"/last-failure
         rm -f "$statebase"--fail
-        if [ `wc -c < "$rdifflogfile"` = 0 ]
+        if [ `wc -c < "$rdifflogfile"` = 0 ] \
+	    && [ `wc -c < "$rdiffcleanlogfile"` = 0 ]
         then
           touch "$statebase"--nowarn
           touch "$base"/last-nowarn-backup
@@ -264,10 +266,20 @@ then
           logger -p local5.info -t LYSrdiff "$lysrdiffpart $category $subcategory: OK"
           $ss --ok $disk $part "$category" "$subcategory"
         else
-          echo ${msg}: WARNING: output from rdiff-backup:
-          echo
-          sed 's/^/ /' "$rdifflogfile"
-          echo
+	  if [ `wc -c < "$rdiffcleanlogfile"` != 0 ]
+	  then
+            echo ${msg}: WARNING: output from rdiff-backup cleaning:
+            echo
+            sed 's/^/ /' "$rdiffcleanlogfile"
+            echo
+	  fi
+	  if [ `wc -c < "$rdifflogfile"` != 0 ]
+	  then
+            echo ${msg}: WARNING: output from rdiff-backup:
+            echo
+            sed 's/^/ /' "$rdifflogfile"
+            echo
+	  fi
           if [ ! -f "$statebase"--warn ]
           then
             touch "$statebase"--warn
@@ -301,6 +313,9 @@ do
 	if [ "`cat $id`" != "$disk $copy $part" ]
 	then
 	    echo wrong disk mounted at /lysrdiff/$disk/$copy/$part >&2
+	elif [ -f "$statebase"--fail ]
+	then
+	    echo skipping clone of $category/$subcategory: backup failed >&2
 	else
 	    copylysrdiff="/lysrdiff/$disk/$copy/$part/lysrdiff"
 	    copybase="$copylysrdiff/backups/$category/$subcategory"
-- 
GitLab