scpなら-lオプションで帯域制限出来るので、絶対sshでもあるはず!
と思って、manやらnetやら調べたけど無さそう。
なんでそんな必要があるかと言うと、自分の場合、リモートの運用中のサーバにsshでログインして、tarでまるごとシステムのコピーを取得するなんてことが多々ある。
その場合、実運用中のサーバからデータを取るので、なるべく運用中のサーバやネットワークに負荷を掛けずに持ってきたい。
で調べた結果pvっていうコマンドを使えば良さそう。
debian/ubuntuならapt-getで一発インストールだと思う。Red HatやCentだと標準レポジトリには無いと思う。
1 |
$ sudo apt-get install pv |
別にsshに限った話ではなく、標準入出力の帯域制限を行ってくれて、しかもプログレスバーで進捗とかも見せてくれる。
帯域制限は-Lオプションで指定できる。kとかmとかgとか
pvの引数にファイルを渡してやると
1 2 |
$ pv -L 3m 1G.bin > hoge 14MB 0:00:38 [2.87MB/s] [========> ] 11% ETA 0:05:03 |
パーセンテージまで出してくれる。たぶん元ファイルのサイズが分かるから。
パイプで挟まれると
1 2 |
$ cat 1G.bin |pv -L 3m > hoge 9MB 0:00:03 [ 3MB/s] [ <=> |
元ファイルのサイズがわからないので、パーセンテージは出せないが帯域制限はかかっている。
sshで使う時も、パイプであれば何ら変わらない。
1 |
$ ssh foo@example.com 'cat ~/big-data.bin' | pv -L 3m > big-data.bin |
うーん。sshだけじゃなくて何かと便利っぽい。