From a65ec8e403c92194c28bb6e3474778f5b0696ce0 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 26 Jul 2007 02:57:59 +0000 Subject: [PATCH] Better handling of return value. --- backup.sh | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/backup.sh b/backup.sh index 77c58dd..e39cade 100755 --- a/backup.sh +++ b/backup.sh @@ -3,14 +3,21 @@ # Locking LOCKFILE=/home/backup/backuprun.lockfile +# Initially, we consider everything to be just fine. +R=0 + # Die gracefully (ie. remove lockfile) die() { - rm $LOCKFILE + echo `date`": Something nasty happened, and since I fork a lot:" + echo `date`": I CANNOT CLEAN UP THE MESS MYSELF." + echo `date`": You need to get rid of lost process named stuff like $0, tar and ssh." exit 255 } +# Trap C-c and kill trap die SIGINT SIGTERM +# Don't start if we're already running if [ -e $LOCKFILE ]; then echo `date`": $LOCKFILE exists, exiting." exit 1 @@ -49,11 +56,10 @@ unixcomputers=`cat $confdir/computers.unix \ | grep -v "^#" \ | grep -v "^$" ` - +# Backup only one computer, from command line? if [ $1 ] ; then unixcomputers=$1 fi; -### #disse bør kunne varieres fra fs til fs? maksantallfulle=3 #hvor mange fulle vi tar vare på @@ -134,6 +140,9 @@ backup() #it did not work rm $TARFILE echo `date`": $TARFILE empty. $backuplevel backup of $computer:$filesystem failed and deleted" + + # We don't want to return 0 + R=1 fi } @@ -149,6 +158,9 @@ do echo "Passwordless SSH to $computer works." else echo "Could not use passwordless SSH to $computer." + + # We don't want to return 0 + R=1 break; fi @@ -167,23 +179,34 @@ do #clean up our dir at this client if ! ssh $computer "rm -r ~/.backup ; mkdir -m 700 ~/.backup"; then echo "Could not create backup staging area at $computer:~/.backup" + # We don't want to return 0 + R=1 break; fi #try to copy $exclude to $computer if ! scp $exclude $computer:~/.backup/exclude > /dev/null; then echo "Could not copy exclude.txt to $computer" + # We don't want to return 0 + R=1 break; fi #try to copy preeexec and postexec if they exist +# TODO: Gah, clean this mess! [ -f $confdir/preexec.$computer ] && ( scp $confdir/preexec.$computer $computer:~/.backup/preexec || - ( echo "Could not copy preexec.$computer to $computer:~/.backup/preexec"; break ) + ( echo "Could not copy preexec.$computer to $computer:~/.backup/preexec"; + R=1 + break + ) ) [ -f $confdir/postexec.$computer ] && ( scp $confdir/postexec.$computer $computer:~/.backup/postexec || - ( echo "Could not copy postexec.$computer to $computer:~/.backup/postexec"; break ) + ( echo "Could not copy postexec.$computer to $computer:~/.backup/postexec" + break + R=1 + ) ) #try to run preexec if it exist @@ -244,8 +267,6 @@ do -type f \ \! -newer $oldf \ -exec rm {} \; -# #denne funker bare med gnu find -# #-printf "$computer:$filesystem sletter daglig %f (for gammel)\n" done #try to run postexec if it exist @@ -260,6 +281,13 @@ wait echo "Current disk usage:" df -k $storagedir +# Remove lockfile rm $LOCKFILE -echo `date`": Backup run ended" +# Did anything go wrong? +if [ $R != 0 ]; then + echo `date`": Backup run ended with errors, check logs." + exit 1 +else + echo `date`": Backup run ended" +fi -- 2.39.2