Limita la velocità di download di wget o curl durante il download


97

È possibile limitare (limitare) la velocità di download di wgeto curl?

È possibile modificare il valore dell'acceleratore durante il download?


3
No, non è possibile modificare la velocità durante il download. Dai un'occhiata ai gestori di download di Gui come Fatrat o Multiget
Ulrich Dangel,

3
Puoi comunque sospendere il processo tramite SIGSTOPo ctrl + z e riprenderlo in seguito con SIGCONTo fg. Questo dovrebbe mettere in pausa il processo di download.
Ulrich Dangel,

Mi chiedo se esiste un modo generico per limitare qualsiasi programma in esecuzione, ovvero impostando una variabile di ambiente.
Ehtesh Choudhury,

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

Risposte:


131

Sì, entrambi supportano wget e curl limitando la velocità di download. Entrambe le opzioni sono menzionate direttamente nella pagina man.

arricciare

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

Per esempio: 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.

Per esempio: wget --limit-rate=423k


2
È possibile modificarlo in modo dinamico mentre è in corso un download?
Gautam,

2
@GautamK No in quanto wgetcurli programmi interattivi sono né .
Ulrich Dangel,

12
@GautamK Per un file di grandi dimensioni, se il server lo accetta, è possibile interrompere l' elaborazione wgeto curlriprendere con wget -co curl -C. Se hai davvero bisogno di riconfigurare un processo in esecuzione, usa il gocciolamento con un demone, ma l'installazione è un po 'complicata. In alternativa, esamina la modellizzazione del traffico: di nuovo, l'installazione è complicata.
Gilles,

4

2 anni dopo inserirò questo bocconcino, mentre wgete curlnon sono interattivo, almeno wget(e forse curlma non lo so per certo) ha l' -cinterruttore (che sta per continuare da dove avevo interrotto il download in precedenza). Quindi, se hai bisogno di cambiare la tua velocità nel mezzo di un download e presumibilmente hai usato l' -cinterruttore con il --limit-rate=xallora potresti fermarti wgete riavviarlo con una velocità diversa e cambierebbe.


2

È possibile limitare la velocità del traffico utilizzando gli strumenti tce netem, ma ciò limiterà la velocità dell'interfaccia di rete del computer. Suppongo che tu usi solo wgeto curle nessun'altra applicazione sta scambiando traffico attraverso l'interfaccia di rete.

tc utilizza il Token Bucket Filter (TBF) per controllare la velocità.

Un esempio di TBF sarebbe il seguente (rif. Http://www.lartc.org/manpages/tc-tbf.html ):

Per collegare un TBF con una velocità massima sostenuta di 0,5 mbit / s, un picco di 1,0 mbit / s, un buffer da 5 kilobyte, con un limite di dimensione della coda pre-bucket calcolato in modo che il TBF causi al massimo 70 ms di latenza, con un comportamento di picco perfetto , problema:

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

Un altro esempio di usign tc e netem sarebbe il seguente (disponibile in http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

Non esiste un controllo di velocità integrato nella disciplina netem, invece usa una delle altre discipline che fa il controllo di velocità. In questo esempio, utilizziamo Token Bucket Filter (TBF) per limitare l'output.

Per aggiungere il ritardo di ogni pacchetto che va / arriva attraverso l'interfaccia eth0

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

per aggiungere la velocità dei dati in tbf, la dimensione del buffer dei pacchetti e il limite massimo di burst

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

Per visualizzare l'elenco delle regole assegnate in tc per l'interfaccia eth0

 # tc -s qdisc ls dev eth0

L'output del comando precedente sarebbe come di seguito

 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 )

Controlla le opzioni per il buffer e il limite poiché potresti scoprire che hai bisogno di valori predefiniti più grandi di questi (sono in byte)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.