From 5740b9a43ee8fa44627c13852afd16297d4878eb Mon Sep 17 00:00:00 2001 From: eaut Date: Fri, 13 Feb 2015 22:51:59 +0100 Subject: [PATCH] prevent execution of concurrent backup tasks --- rsync_tmbackup.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/rsync_tmbackup.sh b/rsync_tmbackup.sh index b827075..553dcd6 100755 --- a/rsync_tmbackup.sh +++ b/rsync_tmbackup.sh @@ -113,6 +113,10 @@ fi # ----------------------------------------------------------------------------- if [ -f "$INPROGRESS_FILE" ]; then + if pgrep -F "$INPROGRESS_FILE" > /dev/null 2>&1 ; then + fn_log_error "Previous backup task is still active - aborting." + exit 1 + fi if [ -n "$PREVIOUS_DEST" ]; then # - Last backup is moved to current backup folder so that it can be resumed. # - 2nd to last backup becomes last backup. @@ -123,6 +127,8 @@ if [ -f "$INPROGRESS_FILE" ]; then else PREVIOUS_DEST="" fi + # update PID to current process to avoid multiple concurrent resumes + echo "$$" > "$INPROGRESS_FILE" fi fi @@ -213,7 +219,7 @@ while : ; do fn_log_info "Running command:" fn_log_info "$CMD" - touch -- "$INPROGRESS_FILE" + echo "$$" > "$INPROGRESS_FILE" eval $CMD # -----------------------------------------------------------------------------