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


97

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

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


3
いいえ、ダウンロード中に速度を変更することはできません。fatratまたはmultigetのようなGUIダウンロードマネージャを見て
ウルリッヒ・Dangel

3
ただし、SIGSTOPまたはctrl + z を使用してプロセスを中断し、後でSIGCONTまたはfgを使用してプロセスを再開できます。これにより、ダウンロードプロセスが一時停止します。
ウルリッヒダンゲル

環境変数を設定するなど、実行中のプログラムを調整する一般的な方法があるのだろうか。
Ehteshチョードリー

@ ulrich-dangel --limit-rate = amount
Chrips

回答:


131

はい、wgetとcurlの両方がダウンロード速度の制限をサポートしています。両方のオプションは、manページに直接記載されています。

カール

   --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


2
ダウンロードの進行中に動的に変更することは可能ですか?
ゴータム

2
@GautamKいいえ、対話型プログラムでwgetもありませんcurl
ウルリッヒダンゲル

12
サーバはそれを受け入れた場合、あなたは殺すことができる、一つの大きなファイルの場合は@GautamK wgetまたはcurlプロセスをとして再開しwget -cたりcurl -C。実行中のプロセスを本当に再設定する必要がある場合は、デーモンでトリクルを使用しますが、セットアップは少し複雑です。または、トラフィックシェーピングを調べます—複雑な場合は、セットアップを繰り返します。
ジル

4

2年後の間、私は、このちらほらをスローしますwgetし、curlインタラクティブではありません少なくとも、wget(そしておそらくcurl持っていますが、私は確かに知らない)-c(私は以前、ダウンロード中断したところから続けるの略)スイッチを。したがって、ダウンロードの途中で速度を変更する必要があり、おそらく-cスイッチを使用した場合、異なる速度で--limit-rate=x停止wgetして再起動すると、変更されます。


2

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

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

TBFの1つの例は次のとおりです(参照:http : //www.lartc.org/manpages/tc-tbf.html)。

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

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

usign tcとnetemの別の例は次のとおりです(http://www.linuxfoundation.org/collaborate/workgroups/networking/netemにあります)。

netemディシプリンにレート制御は組み込まれていません。代わりに、レート制御を行う他のディシプリンのいずれかを使用してください。この例では、トークンバケットフィルター(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 )

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.