Comment réessayer les connexions avec wget?

23

J'ai une connexion Internet très instable et je dois parfois télécharger des fichiers de 200 Mo maximum.

Le problème est que la vitesse chute fréquemment et reste à --, -K/s et le processus reste en vie. Je pensais juste envoyer des signaux KILL au processus, mais comme je lisais dans le manuel wget sur les signaux ça n'aide pas.

Comment puis-je forcer wget se réinitialiser et reprendre le téléchargement là où il s'est arrêté après que la connexion a été interrompue et rétablie?

je voudrais partir wget en cours d'exécution, et quand je reviens, je veux voir le téléchargement, et ne pas attendre avec rapidité --,-K/s.

Andrei
la source

Réponses:

38

Afin d'éviter le --, -K/s situations que vous pouvez utiliser --read-timeout=seconds. Cela mettra fin à la connexion après le nombre de secondes.

Si vous avez besoin d'aller plus loin, vous pouvez utiliser cette configuration

wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0

Ce sera réessayer connexions refusées et similaires fatal les erreurs ( --retry-connrefused ), il attendra 1 seconde avant de réessayer ( --waitretry ), il attendra au maximum 20 secondes si aucune donnée n’est reçue, puis réessaye ( --read-timeout ), il faudra attendre 15 secondes au maximum avant l'expiration de la connexion initiale ( --timeout ) et enfin il va réessayer un nombre infini de fois ( -t 0 ).

Vous voudrez peut-être aussi mettre ceci dans un while boucle afin d'éviter une défaillance du réseau local et similaire. Dans ce cas, vous devez également ajouter --continue afin de continuer le téléchargement là où vous l'avez laissé. Ce qui suit fonctionne bien dans 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;

En bonus, vous pouvez également utiliser --no-dns-cache au cas où l'hôte équilibre votre demande entre plusieurs serveurs par DNS.

Clause de non-responsabilité: je ne recommande pas l'utilisation de cette option car elle spammerait l'hôte au cas où la connexion serait instable et qu'il serait peu judicieux de la laisser non surveillée. Cependant, c’est ce que vous voulez au cas où vous auriez vraiment besoin de télécharger quelque chose et que votre connexion ne fonctionne pas correctement.

Bell
la source
1
par défaut --read-timeout=900. Vous pouvez juste attendre 15 minutes et wget redémarre le téléchargement.
Boris
16

--tries=number

Cette option définit le nombre de tentatives à numéroter. Spécifiez 0 ou ‘inf’ pour une nouvelle tentative infinie.

wget --tries=70 http://example.com/myfile.zip devrait le faire.

La valeur par défaut est de réessayer 20 fois, avec le exception d'erreurs fatales du type «connexion refusée» ou «introuvable» (404), qui ne sont pas retentées.

Manu
la source