rsync
5回接続しようとしました。ファイルI / Oエラーを示す終了コード11が表示されます。robocopy
ファイルセットを同じ宛先にコピーしようとすると、エラー59が発生します。
問題は、失敗した場所でrobocopy
成功することですrsync
。ログを見ると、robocopy
エラーが発生した直後に30秒間再試行されたことがわかります。これを使用する必要がありますが、30秒後にネットワークエラーを再試行するようにrsync
設定する方法を知りたいです。rsync
これは、200Kを超えるさまざまなサイズのファイルを転送するときに5回だけ発生します。コード 11 の直後に rsync ログを表示すると、すぐにソースからファイルのリストを要求し、同じ終了コード 11 で終了して失敗したことを示します。
コマンドライン
rsync -rtlzv -e "ssh -i c:/RsyncKeys/wa-ecy-gov-test-rsync-key -o ConnectTimeout=140 -o ConnectionAttempts=18" --quiet --stats --exclude-from='rsyncfilter.txt' --force --delete [email protected]: //sdceco/Apps/RSTUDIO/RpackagesNew --timeout=320 --log-file=c:/rsynclogs/rsync11-05-2020.log
どんなアドバイスでも心から感謝します!
答え1
私がすることはこれに似ています
while :
do
rsync … && break
sleep 60
done
ツールが正常に完了すると、rsync
ステータス0(成功)で終了し、ループを終了します。それ以外の場合は、60秒間一時停止され、サイクルが再開されます。私の実装では、次のk
ことを試した後にループを終了するために長い遅延とカウンタを使用する傾向があります。
ss=127 k=4
while [[ $((k--)) -gt 0 ]]
do
rsync … && ss=0 && break
ss=$?
[[ $k -gt 0 ]] && sleep 300
done
echo "completion status of last rsync is $ss"
retry
最近、私は(少なくとも)Debianで利用可能なコマンドを見つけました。したがって、ループコードは大幅に簡素化できます。
retry --delay 60 --time 4 rsync …
ss=$?
echo "completion status of last rsync is $ss"
質問を更新した後にrsync
使用するコマンドは次のとおりです。
rsync -rtlzq -e "ssh -i c:/RsyncKeys/wa-ecy-gov-test-rsync-key -o ConnectTimeout=140 -o ServerAliveInterval=15" --exclude-from='rsyncfilter.txt' --force --delete --log-file=c:/rsynclogs/rsync11-05-2020.log [email protected]: //sdceco/Apps/RSTUDIO/RpackagesNew
多様性
- 45秒間サーバー応答がない場合は、強制的に切断するための転送
ServerAliveInterval=15
機能が追加されました。ssh
- いいえ
-v
(--verbose
)または()でオーバーライドした--stats
からです。-q
--quiet
- いいえ。転送レベルで管理
--timeout
されるからです。ssh
- これ指示のコピーR警告の場合は、Windowsファイルシステムでこれを置き換える必要があります
-l
。-L
私はここでそれを変えませんでしたが、あなた(そして将来の読者)はそれを知る必要があります。