diff --git a/remote-backup b/remote-backup index 36c51c4..5dea4f7 100755 --- a/remote-backup +++ b/remote-backup @@ -99,21 +99,27 @@ do # rotating snapshots of /home (fixme: this should be more general) -# step 1: delete the oldest snapshot, if it exists: - if [ -d "$SNAPSHOT_RW/$NAME/daily.${MAX_ROTATE}" ] + if [ -f "$SNAPSHOT_RW/$NAME/daily.0" ] then - $RM -rf "$SNAPSHOT_RW/$NAME/daily.${MAX_ROTATE}" - fi + echo "Previous backup failed, skipping rotation." + rm "$SNAPSHOT_RW/$NAME/daily.0" + else +# step 1: delete the oldest snapshot, if it exists: + if [ -d "$SNAPSHOT_RW/$NAME/daily.${MAX_ROTATE}" ] + then + $RM -rf "$SNAPSHOT_RW/$NAME/daily.${MAX_ROTATE}" + fi # step 2: shift the snapshots(s) back by one, if they exist - for backup_number in $(seq $((${MAX_ROTATE}-1)) -1 0) - do - if [ -d "$SNAPSHOT_RW/$NAME/daily.${backup_number}" ] - then - $MV -f "$SNAPSHOT_RW/$NAME/daily.${backup_number}" \ - "$SNAPSHOT_RW/$NAME/daily.$((${backup_number}+1))" - fi - done + for backup_number in $(seq $((${MAX_ROTATE}-1)) -1 0) + do + if [ -d "$SNAPSHOT_RW/$NAME/daily.${backup_number}" ] + then + $MV -f "$SNAPSHOT_RW/$NAME/daily.${backup_number}" \ + "$SNAPSHOT_RW/$NAME/daily.$((${backup_number}+1))" + fi + done + fi # step 3: rsync from the system, linking to latest snapshot if files are # identical.