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.