rsync, wget, curl, scp に速度制限をかける方法まとめ

  • 115
    いいね
  • 8
    コメント
この記事は最終更新日から1年以上が経過しています。

数GBのバックアップファイルをネットワーク上のストレージへコピーする際にrsyncを使用しているのだが、あるタイミングから毎回IOエラーが発生するようになった。

rsync error: error in file IO (code 11) at receiver.c(389) [receiver=3.1.0]

code 11 は例えばコピー先の容量が一杯のときなどにでるようだが(参考
転送先のストレージの空き容量などは特に問題なく、HDDもある程度新しいため壊れたとも考えにくい状態。

その後対応を調べたところ、転送速度をある程度絞るとエラーが発生しなくなった。

rsync --bwlimit オプションを設定

rsyncの帯域制限をかけるには、以下のように設定する。単位は kB/sec。

# 転送速度を 1MB/sec に設定
rsync --bwlimit=1024 <送信元> <送信先>

今回はエラーの対処のために行ったが、主にサーバーの負荷を下げる用途に使用するらしい。

その他のコマンドでも帯域制限をかける

wget

# 単位は byte/sec, 例は 1MB/sec
wget --limit-rate=1024k http://XXXXXXXXXXXXXXXXXXXX
wget --limit-rate=1m http://XXXXXXXXXXXXXXXXXXXX

curl

# 1024k, 1m などで指定できるらしい、例は 1MB/sec
curl --limit-rate 1m http://XXXXXXXXXXXXXXXXXXXX

scp

# 単位は Kbit/sec
scp -l 8192 root@hoge.com:/foo/bar.txt .

参考