#!/bin/bash record="$1" pyver=$(echo "$record" | awk -F'%' ' { print $1 }') python=$(echo "$record" | awk -F'%' ' { print $2 }') this_good=True rm -rf save-dir-"$pyver" echo "Hello world" > to-be-saved/modified-file if ! find to-be-saved -name .svn -prune -o -print0 | \ "$python" ../../backshift \ --save-directory save-dir-"$pyver" \ --backup \ --hostname $(hostname) \ --subset test \ --init-savedir > /dev/null 2>&1 then echo False exit 0 fi # Give the files we just backed up, some time to age sleep 30 if ! first_backup_id=$(set -eu; "$python" ../../backshift --save-directory save-dir-"$pyver" --list-backups | \ tail -1 | \ sed 's/ .*$//') then echo False exit 0 fi # Our second backup has one less file to worry about rm -f to-be-saved/modified-file # Do a new backup, sans "modified-file" if ! find to-be-saved -name .svn -prune -o -print0 | \ "$python" ../../backshift \ --save-directory save-dir-"$pyver" \ --backup \ --hostname $(hostname) \ --subset test > /dev/null 2>&1 then echo False exit 0 fi if ! second_backup_id=$(set -eu; "$python" ../../backshift --save-directory save-dir-"$pyver" --list-backups | \ tail -1 | \ sed 's/ .*$//') then echo False exit 0 fi # A bit of a hack - tell backshift to remove any chunk/savesetsummary older than 30 seconds. # Note that this test assumes that the stuff that happens after the "sleep 30" above takes less than # 30 seconds to execute! On a very slow machine, that might not be true. mkdir -p save-dir-"$pyver"/overall echo 30 > save-dir-"$pyver"/overall/maximum-age if "$python" ../../backshift --save-directory save-dir-"$pyver" --expire > /dev/tty 2>&1 then rm -rf first-restore-dir-"$pyver" mkdir -p first-restore-dir-"$pyver" rm -rf second-restore-dir-"$pyver" mkdir -p second-restore-dir-"$pyver" this_good=True if "$python" ../../backshift \ --save-directory save-dir-"$pyver" \ --produce-tar \ --backup-id "$first_backup_id" > /dev/null 2>&1 then echo "$0: First backup restore succeeded: That's a bad thing" 1>&2 this_good=False else echo "$0: First backup restore failed: That's a good thing" 1>&2 fi if "$python" ../../backshift \ --save-directory save-dir-"$pyver" \ --produce-tar \ --backup-id "$second_backup_id" > /dev/null 2>&1 then echo "$0: Second backup restore succeeded: That's a good thing" 1>&2 else echo "$0: Second backup restore failed: That's a bad thing" 1>&2 this_good=False fi else this_good=False all_good=False fi echo "$this_good"