Como repetir conexões com o wget?

23

Eu tenho uma conexão de internet muito instável e às vezes tenho que baixar arquivos de até 200 MB.

O problema é que a velocidade frequentemente cai e fica em --, -K/s e o processo permanece ativo. Pensei em enviar alguns sinais de KILL para o processo, mas ao ler no manual do wget sobre sinais isso não ajuda.

Como posso forçar o wget a reinicializar-se e escolher o download de onde ele parou após a conexão cair e voltar novamente?

Gostaria de deixar o wget em execução e, quando voltar, quero ver o download e não esperar com velocidade --,-K/s .

    
por Andrei 26.10.2012 / 23:27

3 respostas

37

Para evitar as situações de --, -K/s , você pode usar --read-timeout=seconds . Isso fará o tempo limite da conexão após a quantidade de segundos.

Se você precisar ir além disso, você pode usar essa configuração

wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0

Isso tentará novamente conexões recusadas e erros fatais similares ( --retry-connrefused ), esperará 1 segundo antes da próxima tentativa ( --waitretry ), esperará um máximo de 20 segundos no caso de não haver os dados são recebidos e, em seguida, tente novamente ( --read-timeout ), ele esperará no máximo 15 segundos antes do tempo limite inicial da conexão ( --timeout ) e, finalmente, tentará um número infinito de vezes ( -t 0 ).

Você também pode querer colocar isso em um loop while para evitar falhas na rede local e similares. Nesse caso, você também precisa adicionar --continue para continuar o download de onde parou. O seguinte funciona bem no Bash

while [ 1 ]; do
    wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
    if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
    sleep 1s;
done;

Como dica de bônus, você também pode usar --no-dns-cache caso o host balance sua solicitação entre vários servidores pelo DNS.

Isenção de responsabilidade: Eu não recomendo usar isso, pois isso causará spam no host caso a conexão seja instável e não seja prudente deixá-la sem monitoramento. No entanto, é isso que você quer, caso precise realmente fazer o download de algo e sua conexão não funcione adequadamente.

    
por 17.12.2013 / 00:38
16

--tries=number

Esta opção define o número de novas tentativas para o número. Especifique 0 ou "inf" para tentar novamente infinitamente.

wget --tries=70 http://example.com/myfile.zip deve fazê-lo.

O padrão é tentar novamente 20 vezes, com a exceção de erros fatais como "conexão recusada" ou "não encontrada" (404), que não são repetidos.

    
por 27.10.2012 / 01:53
1

Isso ajudaria? Em askubuntu.com, encontrei uma pergunta muito parecida com a que você está perguntando. Aqui está o link para ele: link

    
por 26.10.2012 / 23:53

Tags