web-dev-qa-db-ja.com

ダウンロード中にwgetまたはcurlのダウンロード速度を調整する

wgetまたはcurlのダウンロード速度を調整(制限)することは可能ですか?

ダウンロード中にスロットル値を変更することはできますか?

101
Gautam

はい、wgetとcurlの両方がダウンロードレートの制限をサポートしています。どちらのオプションもマニュアルページに直接記載されています。

curl

   --limit-rate <speed>
          Specify the maximum transfer rate you want curl to use. 
           This feature is useful  if you  have a limited pipe and 
           you'd like your transfer not to use your entire bandwidth.

          The given speed is measured in bytes/second, unless a suffix 
          is appended.  Appending  'k'  or 'K' will count the number
          as kilobytes, 'm' or M' makes it megabytes, while 'g' or 'G' 
          makes it gigabytes. Examples: 200K, 3m and 1G.

例:curl --limit-rate 423K

wget

   --limit-rate=amount
       Limit the download speed to amount bytes per second.  Amount may
       be expressed in bytes, kilobytes with the k suffix, or 
       megabytes with the m suffix.  For example, --limit-rate=20k will limit 
       the retrieval rate to 20KB/s.  This is useful when, for
       whatever reason, you don't want Wget to consume 
       the entire available bandwidth.

例:wget --limit-rate=423k

139
Ulrich Dangel

2年後、私はこの一口を投げますが、wgetcurlはインタラクティブではありませんが、少なくともwget(そしておそらくcurlですが、私にはわかりません。確かに)-cスイッチ(ダウンロードを中断したところから続行することを意味します)。したがって、ダウンロードの途中で速度を変更する必要があり、おそらく-c--limit-rate=xその後、wgetを停止して別の速度で再起動すると、状況が変化します。

4
user82611

tcおよびnetemツールを使用してトラフィックレートを制限することは可能ですが、これによりコンピューターのネットワークインターフェイスのレートが制限されます。 wgetまたはcurlのみを使用し、他のアプリケーションがネットワークインターフェースを介してトラフィックを交換していないことを前提としています。

tcは、トークンバケットフィルター(TBF)を使用してレートを制御します。

TBFの一例は次のようになります(ref。 http://www.lartc.org/manpages/tc-tbf.html ):

持続最大レートが0.5mbit/s、ピークレートが1.0mbit/s、5キロバイトのバッファでTBFを接続するには、TBFが最大70msのレイテンシを引き起こし、完全なピークレートの動作を実現するように、事前バケットキューのサイズ制限を計算します。 、 問題:

# tc qdisc add dev eth0 root tbf rate 0.5mbit \ burst 5kb latency 70ms peakrate 1mbit \ minburst 1540

Usc tcとnetemの別の例は次のようになります( http://www.linuxfoundation.org/collaborate/workgroups/networking/netem にあります):

Netem分野にはレート制御が組み込まれていません。代わりに、レート制御を行う他の分野の1つを使用してください。この例では、トークンバケットフィルター(TBF)を使用して出力を制限しています。

インターフェースeth0を通過する各パケットの遅延を追加するには

 # tc qdisc add dev eth0 root handle 1:0 netem delay 100ms

tbfのデータレート、パケットバッファサイズ、最大バースト制限を追加する

 # tc qdisc add dev eth0 parent 1:1 handle 10: tbf rate 256kbit buffer 1600 limit 3000

インターフェイスeth0のtcに割り当てられたルールのリストを表示するには

 # tc -s qdisc ls dev eth0

上記のコマンドの出力は次のようになります

 qdisc netem 1: limit 1000 delay 100.0ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )
 qdisc tbf 10: rate 256Kbit burst 1599b lat 26.6ms
  Sent 0 bytes 0 pkts (dropped 0, overlimits 0 )

バッファーと制限のオプションを確認してください。これらよりも大きなデフォルトが必要な場合があります(バイト単位)。

2
Abdul