Para evitar as --, -K/s
situações que você pode usar --read-timeout=seconds
. Isso excederá o tempo limite da conexão após a quantidade de segundos.
Se você precisar ir além, pode usar esta configuração
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
Isso tentará novamente conexões recusadas e erros fatais semelhantes ( --retry-connrefused
), aguardará 1 segundo antes da próxima tentativa ( --waitretry
), aguardará no máximo 20 segundos caso nenhum dado seja recebido e tente novamente ( --read-timeout
), aguardará no máximo 15 segundos antes que a conexão inicial atinja o tempo limite ( --timeout
) e, por fim, tente novamente um número infinito de vezes ( -t 0
).
Você também pode colocar isso em um while
loop para evitar falhas na rede local e similares. Nesse caso, você também precisará 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 uma dica de bônus, você também pode usar se --no-dns-cache
o host equilibrar sua solicitação entre vários servidores pelo DNS.
Isenção de responsabilidade: eu não recomendo usá-lo, pois ele enviará spam ao host, caso a conexão seja instável e seja imprudente deixá-lo sem monitoramento. No entanto, é isso que você deseja, caso realmente precise fazer o download de algo e sua conexão não funcione adequadamente.
--read-timeout=900
. Você pode esperar 15 minutos e o wget reiniciará o download.