Posso fazer o curl ou o wget reiniciar se estiver desconectado?

1

Gostaria de baixar um arquivo através de curl - o problema é que minha conexão é muito lenta e, por meios desconhecidos, para de receber dados após ~ 180 kilobytes.

A menos que exista um método melhor para corrigi-lo, eu gostaria de escrever um script de shell que o execute após a desconexão, se o arquivo não for baixado totalmente.

Como tal script seria / deveria ser? É possível conseguir com o script de shell?

    
por Zoltán Schmidt 01.12.2016 / 18:39

1 resposta

3

Você pode dizer a curl para tentar novamente com a --retry opção :

curl --retry 10 ...

tentará até dez vezes para fazer o download do URL fornecido.

Vale a pena verificar as várias opções --retry-... relacionadas na documentação; dado que você está esperando erros, o algoritmo de backoff padrão pode não ser o ideal, então --retry-delay será útil. Conforme mencionado por Sato Katsura , as opções de tempo limite também podem ser úteis ( --...-timeout e --max-time ) .

Se isso falhar, porque curl encontra um erro que não considera ser transitório, você pode usar um loop:

result=56
while [[ ${result} == 56 ]]; do
    curl -C - ...
    result=$?
done

Você pode adicionar um contador para limitar o número de loops.

    
por 01.12.2016 / 18:45