解決策 1:
1 回の同期ですべてを同期する場合は、rsync が成功のリターン コードを返すまでループ内で rsync を呼び出します。
次のようなもの:
RC=1
while [[ $RC -ne 0 ]]
do
rsync -a .....
RC=$?
done
これは、リターン コード 0 が返されるまで、rsync を呼び出してループします。サーバーに DOS を実行しないように、そこにスリープを追加することをお勧めします。
解決策 2:
私はしばらく前にこの同じ問題に遭遇しました。最後に、私はDavidの答えに似たものを書きましたが、Ctrl-Cに応答するなど、最大の再試行で少し掘り下げました: http://blog.iangreenleaf.com/2009/03/rsync-and-retrying- until-we-get-it.html.
解決策 3:
sshpass でまとめて削除
while ! sshpass -p 'xxxx' rsync --partial --append-verify --progress -a -e 'ssh -p 22' /source/ example@unixlinux.online:/dest/; do sleep 5;done