Throttle kecepatan unduhan dari wget atau curl saat mengunduh


97

Apakah mungkin untuk membatasi kecepatan unduhan wgetatau curl?

Apakah mungkin untuk mengubah nilai throttle saat sedang mengunduh?


3
Tidak, tidak mungkin mengubah kecepatan saat mengunduh. Lihatlah pengelola unduhan gui seperti fatrat atau multiget
Ulrich Dangel

3
Namun Anda dapat menangguhkan proses melalui SIGSTOPatau ctrl + z dan melanjutkannya nanti dengan SIGCONTatau fg. Ini akan menghentikan proses pengunduhan.
Ulrich Dangel

Saya ingin tahu apakah ada cara umum untuk menutup setiap program yang sedang berjalan, yaitu melalui pengaturan variabel lingkungan.
Ehtesh Choudhury

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

Jawaban:


131

Ya, dukungan wget dan curl membatasi laju unduhan Anda. Kedua opsi disebutkan secara langsung di halaman manual.

ikal

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

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

Misalnya: wget --limit-rate=423k


2
Apakah mungkin untuk mengubahnya secara dinamis saat unduhan sedang berlangsung?
Gautam

2
@GautamK ada seperti tidak wgetatau curlprogram interaktif.
Ulrich Dangel

12
@GautamK Untuk satu file besar, jika server menerimanya, Anda dapat mematikan wgetatau curlmemproses dan melanjutkan dengan wget -catau curl -C. Jika Anda benar-benar perlu mengkonfigurasi ulang proses yang sedang berjalan, gunakan tetesan dengan daemon - tetapi pengaturannya agak rumit. Atau, lihat ke traffic shaping - lagi, setup jika rumit.
Gilles

4

2 tahun kemudian saya akan melempar berita gembira ini, sementara wgetdan curltidak interaktif, setidaknya wget(dan mungkin curltetapi saya tidak tahu pasti) memiliki -csaklar (yang merupakan kelanjutan dari tempat saya berhenti mengunduh sebelumnya). Jadi, jika Anda perlu mengubah kecepatan Anda di tengah pengunduhan dan Anda mungkin menggunakan -csakelar itu --limit-rate=xmaka Anda bisa berhenti wgetdan memulai kembali dengan kecepatan yang berbeda dan itu akan berubah.


2

Dimungkinkan untuk membatasi tingkat lalu lintas menggunakan tcdan netemalat tetapi ini akan membatasi tingkat untuk antarmuka jaringan komputer. Saya berasumsi bahwa Anda hanya menggunakan wgetatau curldan tidak ada aplikasi lain yang bertukar traffic melalui antarmuka jaringan.

tc menggunakan Token Bucket Filter (TBF) untuk mengontrol laju.

Salah satu contoh TBF adalah sebagai berikut (ref. Http://www.lartc.org/manpages/tc-tbf.html ):

Untuk melampirkan TBF dengan laju maksimum berkelanjutan 0,5mbit / dt, puncak 1,0mbit / dt, buffer 5kilobita, dengan batas ukuran antrian pra-bucket dihitung sehingga TBF menyebabkan paling banyak 70ms latensi, dengan perilaku puncak sempurna yang sempurna , isu:

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

Contoh lain dari usign tc dan netem adalah sebagai berikut (ditemukan di http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

Tidak ada kontrol laju bawaan pada disiplin netem, sebagai gantinya gunakan salah satu disiplin lain yang melakukan kontrol laju. Dalam contoh ini, kami menggunakan Token Bucket Filter (TBF) untuk membatasi output.

Untuk menambahkan penundaan setiap paket melalui antarmuka eth0

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

untuk menambahkan kecepatan data dalam tbf, ukuran buffer paket dan batas burst maksimum

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

Untuk melihat daftar aturan yang ditetapkan dalam tc untuk antarmuka eth0

 # tc -s qdisc ls dev eth0

Output dari perintah di atas akan seperti di bawah ini

 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 )

Periksa opsi untuk buffer dan batas karena Anda mungkin menemukan Anda membutuhkan default lebih besar dari ini (mereka dalam byte)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.