Solución 1:
Si está sincronizando todo en una sola sincronización, llame a rsync en un ciclo hasta que rsync le proporcione un código de retorno exitoso.
Algo como:
RC=1
while [[ $RC -ne 0 ]]
do
rsync -a .....
RC=$?
done
Esto hará un bucle, llamando a rsync, hasta que proporcione un código de retorno de 0. Es posible que desee agregar una suspensión allí para evitar que su servidor sea DOS.
Solución 2:
Me encontré con este mismo problema hace un tiempo. Al final, escribí algo similar a la respuesta de David, pero lo modifiqué un poco con reintentos máximos, respondiendo a Ctrl-C y demás:http://blog.iangreenleaf.com/2009/03/rsync-and-retrying- hasta que lo consigamos.html.
Solución 3:
poniéndolo todo junto con sshpass
while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ [email protected]:/dest/; do sleep 5;done