diff --git a/remote-backup b/remote-backup index e8d67a9..5d675e0 100755 --- a/remote-backup +++ b/remote-backup @@ -74,6 +74,8 @@ done declare -a failedBackups declare -A failedWith +RETRY=5 +RETRY_DELAY=60 failRsync() { nameFailed="$1" @@ -208,13 +210,34 @@ runBackup() { RSYNC_OPTS="$RSYNC_OPTS --timeout=1800" fi - $RSYNC \ - $RSYNC_OPTS \ - $ADDITIONAL_RSYNC_OPTS \ - "${REMOTE_LOCATION}" \ - "$SNAPSHOT_RW/$NAME/$1" + for (( try=1 ; try <= RETRY ; try++ )) + do + $RSYNC \ + $RSYNC_OPTS \ + $ADDITIONAL_RSYNC_OPTS \ + "${REMOTE_LOCATION}" \ + "$SNAPSHOT_RW/$NAME/$1" + + returncode=$? + case $returncode in + 0) + break + ;; + 2) + break + ;; + *) + cat <<-EOF + + Trial $try / $RETRY failed. + Sleeping $RETRY_DELAY... + + EOF + sleep $RETRY_DELAY + ;; + esac + done - returncode=$? case $returncode in 0) :