ダウンロード時のwgetまたはカールのダウンロード速度を制限します。

ダウンロード時のwgetまたはカールのダウンロード速度を制限します。

wgetまたはのダウンロード速度を制限できますかcurl

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

答え1

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

カール

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

得る

   --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年後、私はこの面白い話をスローします。たとえインタラクティブではありませwgetんが、curl少なくともwget(おそらくはcurlわかりませんが)スイッチがあります-c(ダウンロードを中断した時点から続くことを示します)。したがって、ダウンロード中に速度を変更する必要があり、スイッチを使用した場合は、-c別の速度で停止し--limit-rate=xて再起動するwgetと変更されます。

答え3

tcツールを使用してトラフィック速度を制限できますが、netemこれによりコンピュータのネットワークインターフェイスの速度が制限されます。私は、ネットワークインターフェイスを介してトラフィックを交換する他のアプリケーションを使用しているか、他のアプリケーションがないと仮定しますwgetcurl

tcTBF(トークンバケットフィルタ)を使用して速度を制御します。

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

持続最大速度0.5mbit/s、最大速度1.0mbit/s、5KBバッファでTBFを接続すると、事前バケットキューサイズ制限が計算され、TBFの遅延時間が最大70msになり、完全なピーク速度動作を持っています。質問:

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

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

tcのインターフェースeth0に割り当てられているルールのリストを見る

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

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

答え4

wgetの場合、一度に複数のページをダウンロードするときにこの--waitオプションを理解しやすくなります。これにより、wgetが要求の間に特定の秒数待機し、Crawl-delayrobots.txtのディレクティブと一致します。

得る

 -w seconds
 --wait=seconds
     Wait the specified number of seconds between the retrievals.  Use of this
     option is recommended, as it lightens the server load by making the
     requests less frequent.  Instead of in seconds, the time can be specified
     in minutes using the "m" suffix, in hours using "h" suffix, or in days
     using "d" suffix.

     Specifying a large value for this option is useful if the network or the
     destination host is down, so that Wget can wait long enough to reasonably
     expect the network error to be fixed before the retry.  The waiting
     interval specified by this function is influenced by "--random-wait", which
     see.

関連情報