Próbuję zsynchronizować pliki ze zdalnego serwera, który nie jest niezawodny, co oznacza, że połączenie zawiesza się „losowo” z
rsync: połączenie niespodziewanie zamknięte
Rsync jest wywoływany z --partial, więc chciałbym móc wywoływać rsync w pętli, dopóki pliki nie zostaną w pełni przesłane. Wydaje się, że nie ma flagi, która mówi rsync, aby spróbowała ponownie.
Jaki byłby najlepszy sposób na napisanie skryptu? Bash dla pętli?
Odpowiedzi:
Jeśli synchronizujesz wszystko podczas jednej synchronizacji, wywołaj rsync w pętli, aż rsync da ci pomyślny kod powrotu.
Coś jak:
Spowoduje to zapętlenie, wywoływanie rsync, aż da kod powrotu 0. Możesz chcieć dodać tam sen, aby nie dopuścić do DOSowania serwera.
źródło
RC=12; while [[ $RC -eq 12 || $RC -eq 30 ]]
(lub innych statusów wyjścia, które widzisz po upadku sieci).Jakiś czas temu napotkałem ten sam problem. W końcu napisałem coś podobnego do odpowiedzi Davida, ale trochę poprawiłem to z maksymalną liczbą ponownych prób, odpowiadając na Ctrl-C i takie: http://blog.iangreenleaf.com/2009/03/rsync-and-retrying- till-we-get-it.html .
źródło
purtting to wszystko razem z sshpass
źródło