limite inferior para velocidade de download no wget

2

Estou tentando baixar alguns arquivos usando wget , mas depois de uma hora minha velocidade de download diminui. E se eu cancelar o download e reiniciá-lo, a velocidade de download aumentará por uma hora.

É possível colocar um limite inferior para a velocidade de download em wget , de modo que quando a velocidade se tornar inferior a esse limite, wget será reiniciado ou reiniciado?

    
por hossein hosseinvand 29.01.2012 / 18:58

3 respostas

2

Você deve resolver o problema subjacente. Então analise por que sua velocidade de conexão cai e remova a causa.

Se houver alguma funcionalidade de economia de energia, é quase certo que você a desligue ou configure de maneira que sua rede não seja afetada.

    
por 29.01.2012 / 22:05
2

É provável que o site do qual você está fazendo download ou o seu ISP limita sua largura de banda depois de um tempo. Pode ajudar a limitar a taxa de transferência com --limit-rate .

Existem algumas opções que dizem para salvar. Passe --tries ( -t ) para controlar o número de novas tentativas. Você pode obter melhores resultados se acelerar as tentativas com --wait e talvez --wait-random . O Wget será retomado automaticamente onde parou, se o servidor o suportar. Se a taxa de transferência for reduzida a um valor muito baixo, então --read-timeout com um parâmetro muito pequeno, digamos 0.1 por um décimo de segundo, reiniciará a conexão se a taxa cair abaixo de um pacote por 0,1s. Observe que a conexão também será reiniciada se você não receber nenhum pacote durante esse período devido a uma falha de rede.

Se você souber com antecedência aproximadamente quanto tempo você tem antes de ser acelerado, escreva um snippet de shell que mata o processo de wget e o lança novamente com a opção -c para continuar o download. Aviso, não testado; trabalhar com subprocessos de segundo plano no shell é um pouco complicado, então eu recomendo usar Perl ou Python para um trabalho sério.

while wget -q -c http://example.com/wibble & wget_pid=$!
      { sleep 300; kill $wget_pid; } & kill_pid=$!
      wait $wget_pid
      kill $kill_pid
      wait
do sleep 10; done
    
por 30.01.2012 / 23:25
2

Minha versão do wget suporta a repetição após o tempo limite sem download usando read-timeout como este ...

$ wget -c --read-timeout=5 http://thefile.com/getme.txt

36% [+++++++++++++++++++++++++++++++++++++++++++======>                                                                                        ] 280,061,984 --.-K/s   in 6m 16s  

2012-05-09 16:04:23 (105 KB/s) - Read error at byte 280061984/761323675 (Operation timed out). Retrying.

Parece não haver nenhuma maneira de definir o limite inferior, mas ele me ajudou muito nos downloads contínuos - e esperamos que outras pessoas pesquisem esse problema.

    
por 09.05.2012 / 15:10

Tags