Acelere a velocidade de download de wget ou curl durante o download

79

É possível limitar (limitar) a velocidade de download de wget ou curl ?

É possível alterar o valor do acelerador durante o download?

    
por Gautam 23.05.2012 / 14:52

3 respostas

110

Sim, tanto o wget como o curl suportam a limitação da sua taxa de download. Ambas as opções são mencionadas diretamente na página man.

curl

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

Por exemplo: 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.

Por exemplo: wget --limit-rate=423k

    
por 23.05.2012 / 15:00
4

2 anos depois eu irei lançar esse bocado, enquanto wget e curl não são interativos, pelo menos wget (e possivelmente curl mas eu não tenho certeza) tem a opção -c (que significa continuar de onde parei de baixar antes). Portanto, se você precisar alterar sua velocidade no meio de um download e, presumivelmente, usar a opção -c com --limit-rate=x , poderá interromper o wget e reiniciá-lo com uma velocidade diferente e isso mudará.

    
por 01.09.2014 / 05:20
2

É possível limitar a taxa de tráfego usando as ferramentas tc e netem , mas isso limitará a taxa da interface de rede do computador. Estou assumindo que você use apenas wget ou curl e nenhum outro aplicativo está trocando tráfego pela interface de rede.

tc usa o filtro de caçamba de token (TBF) para controlar a taxa.

Um exemplo de TBF seria o seguinte (ref. link ):

Para anexar um TBF com uma taxa máxima sustentada de 0,5mbit / s, uma taxa de pico de 1,0mbit / s, um buffer de 5kilobyte, com um limite de tamanho de fila pré-bucket calculado para que o TBF cause no máximo 70ms de latência, com comportamento perfeito da taxa de pico, questão:

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

Outro exemplo de usign tc e netem seria o seguinte (encontrado em link ):

Não há controle de taxa embutido na disciplina de netem, em vez disso, use uma das outras disciplinas que fazem o controle de taxa. Neste exemplo, usamos o filtro Token Bucket (TBF) para limitar a saída.

Para adicionar o atraso de cada pacote indo / vindo pela interface eth0

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

para adicionar a taxa de dados em tbf, tamanho do buffer de pacote e limite máximo de burst

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

Para ver a lista de regras atribuídas em tc para a interface eth0

 # tc -s qdisc ls dev eth0

A saída do comando acima seria como abaixo

 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 as opções de buffer e limite, pois você pode achar que precisa de padrões maiores que esses (eles estão em bytes)

    
por 05.06.2013 / 11:43