44 votes

Comment réessayer les connexions avec wget?

J'ai une connexion internet très instable et doit parfois télécharger des fichiers aussi grands que 200 Mo.

Le problème est que la vitesse chute fréquemment et reste à --, -K/s et le processus reste actif. J'ai pensé à envoyer quelques signaux KILL au processus, mais comme je l'ai lu dans le manuel de wget sur les signaux cela ne fonctionne pas.

Comment puis-je forcer wget à se réinitialiser et reprendre le téléchargement là où il s'est arrêté après la perte de connexion et son retour?

J'aimerais laisser wget en cours d'exécution et lorsque je reviens, je veux le voir télécharger, et non en attente avec une vitesse --,-K/s.

70voto

your mom Points 21

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.

30voto

Peter Stpme Points 1

--tentatives=numéro

Cette option définit le nombre de tentatives à numéro. Spécifiez 0 ou 'inf' pour une tentative infinie.

wget --tentatives=70 http://example.com/myfile.zip devrait fonctionner.

Par défaut, il est de 20 tentatives, à l' exception des erreurs fatales telles que "connexion refusée" ou "non trouvé" (404), qui ne sont pas réessayées.

2voto

BenjiWiebe Points 8464

Cela vous aiderait-il? Sur askubuntu.com, j'ai trouvé une question très similaire à celle que vous posez. Voici le lien : https://askubuntu.com/questions/72663/how-to-make-wget-retry-download-if-speed-goes-below-certain-threshold

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X