Pour éviter les situations --, -K/s
, vous pouvez utiliser --read-timeout=seconds
. Cela mettra fin à la connexion après le nombre de secondes.
Si vous devez aller au-delà, vous pouvez utiliser cette configuration
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
Cela va réessayer les connexions refusées et des erreurs similaires graves (--retry-connrefused
), il attendra 1 seconde avant la prochaine tentative (--waitretry
), il attendra un maximum de 20 secondes au cas où aucune donnée ne serait reçue, puis réessaiera (--read-timeout
), il attendra un maximum de 15 secondes avant que la connexion initiale n'expire (--timeout
) et enfin il réessaiera un nombre infini de fois (-t 0
).
Vous voudrez peut-être aussi mettre ceci dans une boucle while
pour éviter les pannes du réseau local et similaires. Dans ce cas, vous devez également ajouter --continue
pour reprendre le téléchargement là où vous l'avez laissé. Ce qui suit fonctionne bien en Bash
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
if [ $? = 0 ]; then break; fi; # vérifier la valeur de retour, sortir en cas de succès (0)
sleep 1s;
done;
En bonus, vous pouvez également utiliser --no-dns-cache
au cas où l'hôte répartirait votre demande entre plusieurs serveurs par DNS.
Avis de non-responsabilité : Je ne recommande pas d'utiliser ceci car cela va surcharger l'hôte en cas de connexion instable et il est plutôt imprudent de le laisser sans surveillance. Cependant, c'est ce que vous voulez si vous avez vraiment besoin de télécharger quelque chose et que votre connexion ne fonctionne pas correctement.