scpやrsyncで、インターネット越しにファイル転送すると、よくstallして、転送が失敗するときの対処法。
下記のように、scpやrsyncでファイル転送に失敗することがよく起きます。
$ scp ja_windows_server_2008_r2__x64_dvd_x15-50370.iso remote:/tmp/.
ja_windows_server_2008_r2__x64_dvd_x15-50370. 0% 7184KB 1.4MB/s – stalled –
転送する際に、MAXでPCが頑張ってしまい、途中で息切れしてしまうのが、stallする原因のようなので、転送速度に制限をかけます。
scpの場合
-lのオプションを付けて、その後に、値を入力(単位はKbit/秒)例: scp -l 600 xxxx.iso remote:/tmp/.
600kb/sで転送します。(値は低い方が安定しますが、環境によって調整します)
rsyncの場合
–bwlimitオプションを付けて、その後に、値を入力(単位はKbyte/秒)
例:rsync -zauv –bwlimit=400 xxxx.iso remote:/tmp/
600kb/sで転送します。(値は低い方が安定しますが、環境によって調整します)
stallしなくても、下記のようなエラーでrsync転送に失敗することもあります。
rsync: connection unexpectedly closed (1324 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]
この対処として、圧縮オプション (-z)を外し、さらにtimeout(秒)を追加。
例:rsync -auv –bwlimit=400 –timeout=600 xxxx.iso remote:/tmp/