How to repeatedly call rsync until files are sucessfully transferred
Solution 1:
If you are syncing everything in one sync, call rsync in a loop until rsync gives you a successful return code.
Something like:
RC=1
while [[ $RC -ne 0 ]]
do
rsync -a .....
RC=$?
done
This will loop, calling rsync, until it gives a return code of 0. You may want to add a sleep in there to keep from DOSing your server.
Solution 2:
I ran into this same problem a while back. In the end I wrote something similar to David's answer, but gussied it up a little with max retries, responding to Ctrl-C, and such: http://blog.iangreenleaf.com/2009/03/rsync-and-retrying-until-we-get-it.html.
Solution 3:
purtting it all together with sshpass
while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ [email protected]:/dest/; do sleep 5;done