İndirme sırasında wget veya curl indirme hızını düşürün


97

İndirme hızını (sınırı) azaltmasını mümkün mü wgetyoksa curl?

İndirme sırasında gaz kelebeği değerini değiştirmek mümkün müdür?


3
Hayır, indirirken hızı değiştirmek mümkün değildir. Fatih veya multiget gibi gui indirme yöneticilerine bir göz atın
Ulrich Dangel

3
Ancak, işlemi SIGSTOPveya ctrl + z ile askıya alabilir ve daha sonra SIGCONTveya fg ile devam ettirebilirsiniz . Bu indirme işlemini duraklatmalıdır.
Ulrich Dangel

Bir çevre değişkeni ayarlayarak, çalışan herhangi bir programı boğmanın genel bir yolu olup olmadığını merak ediyorum.
Ehtesh Choudhury

@ ulrich-dangel - limit oranı = tutarı
Chrips

Yanıtlar:


131

Evet, hem wget hem de curl indirme hızınızı sınırlandırıyor. Her iki seçenek de doğrudan man sayfasında belirtilmiştir.

bukle

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

Örneğin: 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.

Örneğin: wget --limit-rate=423k


2
İndirme işlemi devam ederken dinamik olarak değiştirmek mümkün müdür?
Gautam

2
@GautamK Hayır wgetya curlda etkileşimli programlar değil.
Ulrich Dangel

12
Sunucu bunu kabul ederse, sen öldürebilir, tek bir büyük dosya için @GautamK wgetveya curlsüreci ile devam wget -cya curl -C. Çalışan bir işlemi gerçekten yeniden yapılandırmanız gerekiyorsa, damlamayı bir daemon ile kullanın - ancak kurulum biraz karmaşıktır. Alternatif olarak, trafik şekillendirmeye bakın - yine karmaşıksa kurulum.
Gilles

4

2 yıl sonra ise, bu tidbit atacağım wgetve curletkileşimli değildir, en azından, wget(ve muhtemelen curlvardır ama kesin bilmiyorum) -c(daha önce indirirken kaldığı yerden devam eder) anahtarı. Dolayısıyla, bir indirme işleminin ortasında hızınızı değiştirmeniz gerekiyorsa ve -cdüğmeyi büyük olasılıkla kullandıysanız , --limit-rate=xo zaman durdurabilir wgetve farklı bir hızda yeniden başlatabilirsiniz ve değişebilir.


2

tcVe netemaraçlarını kullanarak trafik oranını sınırlamak mümkündür, ancak bu, bilgisayarın ağ arayüzü için oranı sınırlar. Yalnızca kullandığınızı wgetveya curlbaşka hiçbir uygulamanın ağ arayüzü üzerinden trafik alışverişinde bulunmadığını kabul ediyorum .

tc oranı kontrol etmek için Token Kova Filtresi (TBF) kullanır.

TBF'nin bir örneği şu şekilde olabilir (ref. Http://www.lartc.org/manpages/tc-tbf.html ):

Sürekli olarak maksimum 0.5 mb / s hızında, bir 1.0 mb / s'lik bir zirve hızına sahip 5 TB'lık bir tamponu olan bir TBF'yi bağlamak için hesaplanan bir ön-kova kuyruk büyüklüğü sınırına sahip bir 5-klobit tamponu , konu:

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

Usign tc ve netem'in bir başka örneği şu şekilde olabilir ( http://www.linuxfoundation.org/collaborate/workgroups/networking/netem adresinde bulunur ):

Netem disipline yerleşik bir hız kontrolü yoktur, bunun yerine hız kontrolü yapan diğer disiplinlerden birini kullanın. Bu örnekte, çıkışı sınırlamak için Token Bucket Filter (TBF) kullanıyoruz.

Eth0 arabiriminden geçen / gelen her paketin gecikmesini eklemek

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

Veri hızını tbf, paket tampon boyutu ve maksimum patlama limiti olarak eklemek

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

Eth0 arabirimine tc ile atanan kuralların listesini görmek için

 # tc -s qdisc ls dev eth0

Yukarıdaki komutun çıktısı aşağıdaki gibi olacaktır.

 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 )

Tampon seçeneklerini kontrol edin ve bunlardan daha büyük varsayılanlara ihtiyacınız olduğunu bulabileceğinizden sınırlayın (bayt cinsinden)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.