Ubuntu 18.10でrsyncとsshタイムアウト

Ubuntu 18.10でrsyncとsshタイムアウト

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

関連情報