Acelere la velocidad de descarga de wget o curl mientras descarga

97

¿Es posible acelerar (limitar) la velocidad de descarga de wgeto curl?

¿Es posible cambiar el valor del acelerador mientras se está descargando?

Gautama
fuente
3
No, no es posible cambiar la velocidad durante la descarga. Echa un vistazo a los gestores de descargas gui como fatrat o multiget
Ulrich Dangel
3
Sin embargo, puede suspender el proceso mediante SIGSTOPo ctrl + z y reanudarlo más tarde con SIGCONTo fg. Esto debería pausar el proceso de descarga.
Ulrich Dangel
Me pregunto si hay una forma genérica de acelerar cualquier programa en ejecución, es decir, mediante la configuración de una variable de entorno.
Ehtesh Choudhury
@ ulrich-dangel --limit-rate = cantidad
Chrips

Respuestas:

131

Sí, tanto wget como curl admiten limitar su velocidad de descarga. Ambas opciones se mencionan directamente en la página del manual.

rizo

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

P.ej: 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.

P.ej: wget --limit-rate=423k

Ulrich Dangel
fuente
2
¿Es posible cambiarlo dinámicamente mientras hay una descarga en curso?
Gautam
2
@GautamK No, como wgettampoco lo curlson los programas interactivos.
Ulrich Dangel
12
@GautamK Para un archivo grande, si el servidor lo acepta, puede eliminar el proceso wgeto curly continuar con wget -co curl -C. Si realmente necesita reconfigurar un proceso en ejecución, use goteo con un demonio, pero la configuración es un poco complicada. Alternativamente, mire la configuración del tráfico; nuevamente, la configuración es complicada.
Gilles
4

2 años más tarde voy a tirar este dato en, al tiempo wgety curlno son interactivos, por lo menos wget(y, posiblemente, curlpero no lo sé a ciencia cierta) tiene el -cinterruptor (que está parado para continuar desde donde lo había dejado la descarga anterior). Entonces, si necesita cambiar su velocidad en el medio de una descarga y presumiblemente usó el -cinterruptor con el, --limit-rate=xentonces podría detenerlo wgety reiniciarlo con una velocidad diferente y cambiaría.

usuario82611
fuente
2

Es posible limitar la velocidad de tráfico utilizando las herramientas tcy netem, pero esto limitará la velocidad de la interfaz de red de la computadora. Supongo que usa solo wgeto curlninguna otra aplicación está intercambiando tráfico a través de la interfaz de red.

tc usa Token Bucket Filter (TBF) para controlar la velocidad.

Un ejemplo de TBF sería el siguiente (ref. Http://www.lartc.org/manpages/tc-tbf.html ):

Para adjuntar un TBF con una velocidad máxima sostenida de 0.5mbit / s, una tasa máxima de 1.0mbit / s, un búfer de 5 kilobytes, con un límite de tamaño de cola pre-bucket calculado para que el TBF cause como máximo 70 ms de latencia, con un comportamiento de tasa de pico perfecto , problema:

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

Otro ejemplo de usign tc y netem sería el siguiente (que se encuentra en http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

No hay control de velocidad incorporado a la disciplina netem, en su lugar use una de las otras disciplinas que sí lo hacen. En este ejemplo, utilizamos Token Bucket Filter (TBF) para limitar la salida.

Para agregar el retraso de cada paquete que va / viene a través de la interfaz eth0

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

para agregar la velocidad de datos en tbf, el tamaño del búfer de paquetes y el límite máximo de ráfaga

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

Para ver la lista de reglas asignadas en tc para la interfaz eth0

 # tc -s qdisc ls dev eth0

El resultado del comando anterior sería el siguiente

 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 )

Verifique las opciones para el búfer y limite, ya que puede encontrar que necesita valores predeterminados más grandes que estos (están en bytes)

Abdul
fuente