2つのデータセンターでrsyncを実行するコマンドをcronで実行しています。データセンター間の接続速度は約1Mbpsです。 rsyncが約2.7GBから2.9GBの転送データで失敗し続けることに気づきました。これは、上記の接続では約1時間以上に相当する可能性があります。私は過去に、ファイアウォールが1時間以上開いたアイドル接続を閉じるように構成されていることを知っています。
しかし、rsync転送は本当にアイドル状態になるのでしょうか?これを修正するにはどうすればよいですか?
エラー:
rsync:接続が予期せず閉じられました(これまでに2987596424バイトを受信しました)[受信者]
rsyncエラー:io.c(605)でのrsyncプロトコルデータストリーム(コード12)のエラー[receiver = 3.0.9]
rsync:接続が予期せず閉じられました(これまでに523バイトを受信しました)[ジェネレーター]
rsyncエラー:io.c(605)でのrsyncプロトコルデータストリーム(コード12)のエラー[generator = 3.0.9]
私はすでにこれを〜/ .ssh/configに持っています(しかし、おそらくこれらの値を増やす必要がありますか?):
Host *
ServerAliveInterval 60
ServerAliveCountMax 15
はい、rsync
は、ディスクの読み取り中および送信するパケットがない間、quietを維持できます。
あなたが言った。 ファイアウォールは、1時間以上開いたアイドル接続を閉じるように構成されていますが、継続的なアイドル期間については何もありません。
rsync
は両端で処理し、以前に計算されたチェックサムに基づいて、ファイル全体を読み取ってパケット間の差異を検索します。
両端のファイルに違いはありませんが、違いが見つかるまで両端のファイルが交換されない場合があります。
デスクトップと彼のバックアップの間で実行された単一のrsyncを表す小さなグラフィックがあります。
数秒が経過したことがありますなしデータ:
TIME BLOCKS BYTES
IN OUT IN OUT
...
Jul 28 15:00:07 2013 449 41 23443 1526403
Jul 28 15:00:08 2013 0 0 0 0
Jul 28 15:00:09 2013 0 0 0 0
Jul 28 15:00:10 2013 143 182 21348 1123986
Jul 28 15:00:11 2013 112 142 6966 523326
Jul 28 15:00:12 2013 31 30 1942 1890
Jul 28 15:00:13 2013 30 28 1853 88038
Jul 28 15:00:14 2013 0 0 0 0
Jul 28 15:00:15 2013 57 66 3954 38301
...
回避策として、ソケットベースのssh共有を使用できます。
最初に、ソケットと接続をぶら下げるためにプレーンsshを実行します
ssh -M -o ControlPath=$HOME/.ssh/socket_test destHost ping -n localhost
別のウィンドウより:
rsync -e 'ssh -e none -S $HOME/.ssh/socket_test' /src/file destHost:/dst/file
このようにして、両方のsshセッションに1つの接続のみが使用されます。 ping
は、同じネットワーク接続を使用してrsync
が静かに動作するよりも、(多くの)継続的なトラフィックを保証します。