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?


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


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


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)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.