Soluzione 1:
Se stai sincronizzando tutto in un'unica sincronizzazione, chiama rsync in un ciclo finché rsync non ti restituisce un codice di ritorno corretto.
Qualcosa come:
RC=1
while [[ $RC -ne 0 ]]
do
rsync -a .....
RC=$?
done
Questo andrà in loop, chiamando rsync, fino a quando non fornisce un codice di ritorno pari a 0. Potresti voler aggiungere uno sleep lì dentro per evitare di DOSare il tuo server.
Soluzione 2:
Mi sono imbattuto in questo stesso problema qualche tempo fa. Alla fine ho scritto qualcosa di simile alla risposta di David, ma l'ho arricchito un po 'con tentativi massimi, rispondendo a Ctrl-C e simili:http://blog.iangreenleaf.com/2009/03/rsync-and-retrying- fino a quando non lo avremo.html.
Soluzione 3:
mettendo tutto insieme con sshpass
while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ [email protected]:/dest/; do sleep 5;done