Browse Source

new: [rsync-backup] add retry 3 times mecanism in ``mirror-dir``

Signed-off-by: Valentin Lab <valentin.lab@kalysto.org>
backup
Valentin Lab 4 years ago
parent
commit
cca9f30830
  1. 49
      rsync-backup/resources/bin/mirror-dir

49
rsync-backup/resources/bin/mirror-dir

@ -44,7 +44,7 @@ Options:
examples: -d liszt.musicalta:10022 -d 10.8.0.19/200 examples: -d liszt.musicalta:10022 -d 10.8.0.19/200
-u USER (default: 'backuppc')
-u USER (default: 'rsync')
Local AND destination user to log as at both ends to transfer file. Local AND destination user to log as at both ends to transfer file.
This local user need to have a NOPASSWD ssh login towards it's This local user need to have a NOPASSWD ssh login towards it's
@ -95,7 +95,7 @@ if test -z "$hostname"; then
die "Couldn't figure a valid hostname. Please specify one with \`\`-h STORENAME\`\`." die "Couldn't figure a valid hostname. Please specify one with \`\`-h STORENAME\`\`."
fi fi
user=${user:-backuppc}
user=${user:-rsync}
dest_path=/var/mirror/$hostname dest_path=/var/mirror/$hostname
config_file="/etc/$exname/config.yml" config_file="/etc/$exname/config.yml"
@ -182,15 +182,48 @@ for dest in "${dests[@]}"; do
echo --------------------------------- echo ---------------------------------
date date
echo nice -n 15 rsync "${current_rsync_options[@]}" -azvARH -e "'sudo -u $user ssh ${ssh_options[*]}'" --delete --delete-excluded --partial --partial-dir .rsync-partial --numeric-ids "$dir/" "$user@$dest":"$dest_path"
lock "$lock_label" -v -D -k -- \
nice -n 15 \
echo nice -n 15 \
rsync "${current_rsync_options[@]}" -azvARH \ rsync "${current_rsync_options[@]}" -azvARH \
-e "'sudo -u $user ssh ${ssh_options[*]}'" \
--delete --delete-excluded \
--partial --partial-dir .rsync-partial \
--numeric-ids "$dir/" "$user@$dest":"$dest_path"
retry=1
while true; do
lock "$lock_label" -v -D -k -- \
nice -n 15 \
rsync "${current_rsync_options[@]}" -azvARH \
-e "sudo -u $user ssh ${ssh_options[*]}" \ -e "sudo -u $user ssh ${ssh_options[*]}" \
--delete --delete-excluded --partial --partial-dir .rsync-partial \
--delete --delete-excluded \
--partial --partial-dir .rsync-partial \
--numeric-ids "$dir/" "$user@$dest":"$dest_path" --numeric-ids "$dir/" "$user@$dest":"$dest_path"
errlvl="$?"
case "$errlvl" in
20) ## Received SIGUSR1, SIGINTT
echo "!! Rsync received SIGUSR1 or SIGINT"
break 2
;;
137|143) ## killed SIGKILL, SIGTERM, SIGINT
echo "!! Rsync received $(kill -l "$errlvl")"
break 2
;;
0)
echo "Rsync finished with success."
break
;;
*)
echo "!! Rsync failed with an errorlevel $errlvl."
if [ "$retry" -lt 3 ]; then
echo "!! Triggering a retry ($((++retry))/3)"
continue
else
echo "!! Tried 3 times, bailing out."
break
fi
;;
esac
done
rm -fv "$tmp_exclude_patterns" rm -fv "$tmp_exclude_patterns"
done done
done done
Loading…
Cancel
Save