最近、rsync で管理しているサーバーから自宅のマシンへファイルを転送しようとすると
Write failed: Broken pipe
のエラーが必ず出るようになりました。2 MB ぐらいまで転送は進むのですが、途中で「詰まる」ようにストールし、最終的に rsync がエラーで異常終了。scp や rsync + ssh を使っても必ずエラーが発生し、ちょっとした作業の妨げになっていました。
MTU を 1500 から下げると解消されるという情報をを見つけたものの、サーバーもパソコンも保守的な 1450 にも設定しても改善されません。
何とか解決の手がかりを見つけたく、仕方なく (長い) rsync の man ページを読み始め、転送速度の制限を掛ける bwlimit のオプションを発見:
−−bwlimit=KBPSThis option allows you to specify a maximum transfer rate in kilobytes per second. This option is most effective when using rsync with large files (several megabytes and up).
正に 30 〜 40 MB ぐらいのファイル転送で困っていたので、取り敢えず bwlimit=500 に設定して rsync を実行したら、転送が無事に完了。
rsync -rtPz --bwlimit=150 kawai@hogehoge.com:~/work/hogehoge.7z . kawai@hogehoge.com's password: receiving file list ... 1 file to consider hogehoge.7z 38667492 100% 193.35kB/s 0:03:15 (xfer#1, to-check=0/1) sent 17850 bytes received 29899870 bytes 150718.99 bytes/sec total size is 38667492 speedup is 1.29
どれくらいの転送速度まで耐えられるのかは実験で試す考えですが、先ずは問題解決ですっきりしました。
サーバーの更新作業にもどります…