
rsyncコマンドを使用すると、次のような奇妙な動作が発生しました。
sudo rsync --timeout=300 --compress-level=9 -aHe "ssh -o ConnectTimeout=200 -o ServerAliveInterval=2 -ServerAliveCountMax=200" --progress --delete -z /media/Restic/* [email protected]:/DataVolume/BACKUPS/T4-Ubuntu-Restic
数分後にエラーが発生します。
rsync: [sender] write error: Broken pipe (32)
2番目のターミナルウィンドウで別の同時SSHセッションをテストしてゲートウェイへのpingを実行し、rsyncが中断された場合でも実行を続け、rsyncが中断されるとしばらく一時停止しました。 Ubuntuは1〜2秒間接続を切断して再起動するようです。
rsyncのsshがコマンドに設定したタイムアウト200または300を待たずに壊れたパイプをすぐに報告する理由は疑問です。
答え1
--bwlimit=4096 オプションが問題を解決しました。
答え2
この--timeout
オプションは、リモコンがrsync
停止または使用できなくなる状況を処理するために使用されます。その意味は」リモート接続を放棄する前に、この時間待ってください。」。
シナリオなど、接続が強制的に閉じられると、接続がなくなり、rsync
ピアと通信できなくなります。これで同僚からのニュースが聞こえないことが保証されているので、放棄してすぐにエラーを報告します。
理想的には、サーバーが無差別に接続を閉じる理由を調べる必要があります。その間、転送中にループを設定すると便利です。
while :
do
rsync ... /media/Restic/ [email protected]:/DataVolume/BACKUPS/T4-Ubuntu-Restic &&
break
ss=$?
[[ -t 2 ]] && echo "Rsync failed with status $ss; retrying..." >&2
sleep 60
done