Acelere a velocidade de download do wget ou enrole durante o download

97

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

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

Gautam
fonte
3
Não, não é possível alterar a velocidade durante o download. Ter um olhar para gerenciadores de download gui como Fatrat ou Multiget
Ulrich Dangel
3
No entanto, você pode suspender o processo via SIGSTOPou ctrl + z e continuar mais tarde com SIGCONTou fg. Isso deve pausar o processo de download.
Ulrich Dangel
Gostaria de saber se existe uma maneira genérica de limitar qualquer programa em execução, ou seja, através da configuração de uma variável de ambiente.
Ehtesh Choudhury
@ Ulrich-dangel --limit-rate = montante
Chrips

Respostas:

131

Sim, suporte a wget e curl limitando sua taxa de download. Ambas as opções são mencionadas diretamente na página de manual.

ondulação

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

Ulrich Dangel
fonte
2
É possível alterá-lo dinamicamente enquanto um download está em andamento?
Gautam
2
@GautamK Não como nem wgetnem curlsão programas interativos.
Ulrich Dangel
12
@GautamK Para um arquivo grande, se o servidor o aceitar, você poderá interromper o processo wgetou curlprocessar e continuar com wget -cou curl -C. Se você realmente precisar reconfigurar um processo em execução, use trickle com um daemon - mas a configuração é um pouco complicada. Como alternativa, analise a modelagem de tráfego - novamente, a configuração, se complicada.
Gilles
4

Dois anos depois, lançarei esse boato, enquanto wgete curlnão for interativo, pelo menos wget(e possivelmente, curlmas não sei ao certo) tem o -cinterruptor (que significa continuar de onde parei o download anteriormente). Portanto, se você precisar alterar sua velocidade no meio de um download e, presumivelmente, usar o -cinterruptor com o botão --limit-rate=x, poderá parar wgete reiniciá-lo com uma velocidade diferente e isso mudará.

user82611
fonte
2

É possível limitar a taxa de tráfego usando as ferramentas tce netem, mas isso limitará a taxa da interface de rede do computador. Suponho que você use apenas wgetou curlnenhum outro aplicativo esteja trocando tráfego pela interface de rede.

tc usa o filtro de balde de token (TBF) para controlar a taxa.

Um exemplo de TBF seria o seguinte (ref. Http://www.lartc.org/manpages/tc-tbf.html ):

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 5kilobytes, com um limite de tamanho de fila pré-bucket calculado para que o TBF cause no máximo 70ms de latência, com um 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 nome de usuário tc e netem seria o seguinte (encontrado em http://www.linuxfoundation.org/collaborate/workgroups/networking/netem ):

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

Para adicionar o atraso de cada pacote que passa / passa 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 a seguinte

 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)

Abdul
fonte