wget と curl

普段はwgetをよく使うのですが、転送速度を制限したいことがあり、curlも組み合わせてみました。

64bit版Linuxを使っているのですが、ネットワークカードのドライバに問題があるのか、カーネルの問題なのか、高速度で転送をしているとハングアップしてしまうという事象が発生していて、仮想マシンのバックアップができなくて困っていました。scpを使うと転送速度が遅すぎで時間がかかるし、httpだと速すぎてハングアップしてしまうし、ということでOSのバージョンアップかなぁ、と思っていたのですが、その時間もとれそうにありません。バックアップがとれないのも不安なので、USB HDDへのバックアップに戻そうかとも思ったのですが、その方式は自動化が難しそうなので避けたいところ。

ということで、転送速度制限ができるコマンドはないかと思って調べたところ、curlがありました。そういえばありましたね、curl。ということで、次のようなスクリプトを組んで、仮想マシンのバックアップをとってみました。diskファイルのような巨大なファイルだけが問題となっていたので、それ以外はwgetで取得して、diskファイルだけcurlで転送速度制限をかけながら取得しています。これで、無事バックアップがとれました。

#!/bin/sh
target=host.example.jp
wget -np -R ${target}-flat.disk -r -l1 "http://example.jp/vm/${target}/"
curl --limit-rate 40M -O http://example.jp/vm/${target}/${target}-flat.disk

追記) ファイル転送が何らかの理由で停止したときは、そこからダウンロードを再開したいことがあります。curlでダウンロードの再開をする方法があり、「-C – 」というオプションをつけます。wgetでは「-c」というオプションをつけます。

関連書籍:




同じタグの記事: curl
同じタグの記事: wget
同じカテゴリの記事: Linux