skip rotation if previous run failed (daily.0 is a ordinary file)

This commit is contained in:
Vincent Riquer 2011-06-08 22:17:32 +02:00
parent c2e0f9acb2
commit 61d1013c80

View File

@ -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.