Update symlink and remove .inprogress only after success (#264)
This commit is contained in:
+21
-18
@@ -97,10 +97,10 @@ fn_expire_backups() {
|
|||||||
local current_timestamp=$EPOCH
|
local current_timestamp=$EPOCH
|
||||||
local last_kept_timestamp=9999999999
|
local last_kept_timestamp=9999999999
|
||||||
|
|
||||||
# we will keep requested backup
|
# we will keep requested backup
|
||||||
backup_to_keep="$1"
|
backup_to_keep="$1"
|
||||||
# we will also keep the oldest backup
|
# we will also keep the oldest backup
|
||||||
oldest_backup_to_keep="$(fn_find_backups | sort | sed -n '1p')"
|
oldest_backup_to_keep="$(fn_find_backups | sort | sed -n '1p')"
|
||||||
|
|
||||||
# Process each backup dir from the oldest to the most recent
|
# Process each backup dir from the oldest to the most recent
|
||||||
for backup_dir in $(fn_find_backups | sort); do
|
for backup_dir in $(fn_find_backups | sort); do
|
||||||
@@ -467,9 +467,9 @@ if [ -n "$(fn_find "$INPROGRESS_FILE")" ]; then
|
|||||||
elif [[ "$OSTYPE" == "netbsd"* ]]; then
|
elif [[ "$OSTYPE" == "netbsd"* ]]; then
|
||||||
RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")"
|
RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")"
|
||||||
if ps -axp "$RUNNINGPID" -o "command" | grep "$APPNAME" > /dev/null; then
|
if ps -axp "$RUNNINGPID" -o "command" | grep "$APPNAME" > /dev/null; then
|
||||||
fn_log_error "Previous backup task is still active - aborting."
|
fn_log_error "Previous backup task is still active - aborting."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")"
|
RUNNINGPID="$(fn_run_cmd "cat $INPROGRESS_FILE")"
|
||||||
if ps -p "$RUNNINGPID" -o command | grep "$APPNAME"
|
if ps -p "$RUNNINGPID" -o command | grep "$APPNAME"
|
||||||
@@ -525,13 +525,13 @@ while : ; do
|
|||||||
# Purge certain old backups before beginning new backup.
|
# Purge certain old backups before beginning new backup.
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
if [ -n "$PREVIOUS_DEST" ]; then
|
if [ -n "$PREVIOUS_DEST" ]; then
|
||||||
# regardless of expiry strategy keep backup used for --link-dest
|
# regardless of expiry strategy keep backup used for --link-dest
|
||||||
fn_expire_backups "$PREVIOUS_DEST"
|
fn_expire_backups "$PREVIOUS_DEST"
|
||||||
else
|
else
|
||||||
# keep latest backup
|
# keep latest backup
|
||||||
fn_expire_backups "$DEST"
|
fn_expire_backups "$DEST"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Start backup
|
# Start backup
|
||||||
@@ -613,11 +613,14 @@ while : ; do
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Add symlink to last backup
|
# Add symlink to last backup
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
if [ "$EXIT_CODE" = 0 ]; then
|
||||||
|
# Create the latest symlink only when rsync succeeded
|
||||||
|
fn_rm_file "$DEST_FOLDER/latest"
|
||||||
|
fn_ln "$(basename -- "$DEST")" "$DEST_FOLDER/latest"
|
||||||
|
|
||||||
fn_rm_file "$DEST_FOLDER/latest"
|
# Remove .inprogress file only when rsync succeeded
|
||||||
fn_ln "$(basename -- "$DEST")" "$DEST_FOLDER/latest"
|
fn_rm_file "$INPROGRESS_FILE"
|
||||||
|
fi
|
||||||
fn_rm_file "$INPROGRESS_FILE"
|
|
||||||
|
|
||||||
exit $EXIT_CODE
|
exit $EXIT_CODE
|
||||||
done
|
done
|
||||||
|
|||||||
Reference in New Issue
Block a user