rsync 再試行間の固定時間の設定

rsync 再試行間の固定時間の設定

rsync5回接続しようとしました。ファイル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私はここでそれを変えませんでしたが、あなた(そして将来の読者)はそれを知る必要があります。

おすすめ記事