Cleanup tmp directory if cp -lR fails
[wizbackup.git] / wizbackup
index ad7a549ce2c099fadc0998e3f6e43fc489d163dd..f857379346de4bb5e38bace10e2d9e14c05e9598 100755 (executable)
--- a/wizbackup
+++ b/wizbackup
@@ -1,15 +1,24 @@
 #!/bin/bash
 #
-# wizbackup 2.0 - Simple rsync backup
+# WizBackup 2.0 - Simple rsync backup
 # Based on incremental-backup 0.1 by Matteo Mattei
 #
 # Copyright 2006 Matteo Mattei <matteo.mattei@gmail.com>
 # Copyright 2007, 2008, 2009, 2010, 2011 Bernie Innocenti <bernie@codewiz.org>
 #
-# 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
-# the Free Software Foundation, either version 3 of the License,
-# or (at your option) any later version.
+#  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
+#  the Free Software Foundation, either version 3 of the License,
+#  or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
 
 
 if [ $# -lt 2 ]; then
@@ -17,8 +26,8 @@ if [ $# -lt 2 ]; then
        exit 1
 fi
 
-# Fail on any error; Treat undefined variables as errors
-set -e -u
+# Treat undefined variables as errors
+set -u
 
 #####################################################################
 # CONFIGURATION
@@ -116,12 +125,20 @@ do_link()
                echo "$(date): Linking snapshot $DEST/$newest to $DEST/tmp"
                # TODO: Creating the hardlinks takes a lot of time.
                # Perhaps we could save time by recycling the oldest snapshot
-               cp -lR "$DEST/$newest" "$DEST/tmp" || exit 670
+               cp -lR "$DEST/$newest" "$DEST/tmp"
+               RESULT=$?
+               if [ $RESULT -ne 0 ]; then
+                       echo "$(date): Failed to setup tmp snapshot: $RESULT. Cleaning up."
+                       rm -rf "$DEST/tmp"
+                       exit $RESULT
+               fi
        fi
 }
 
 do_test()
 {
+       # TODO: test for free space and free inodes in the $DEST filesystem
+
        # Avoid clobbering the latest snapshot if the remote host does
        # not allow us to connect
        # --contimeout: sometimes hangs on connection...