Sometimes I have to transfer large numbers of large files for work. When an rsync error occurs in the middle of the night, it makes for a pretty disappointing morning. The following script runs rsync persistently, meaning it will retry (with --ignore-existing) until all files are received and rsync exits with status 0.
Here's the script:
#!/bin/bash # persistent-rsync # run an rsync command until it completes with exit status 0 # always runs with --progress and --ignore-existing # passes all other command line arguments on to rsync COMMAND="rsync --progress --ignore-existing $*" date echo "Running rsync until complete..." echo $COMMAND while ! $COMMAND do date echo "Restarting rsync..." sleep 1 done date echo "Rsync complete." exit 0