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 actif. Je pensais juste envoyer des signaux KILL au processus, mais quand je lis dans le manuel wget à propos des signaux , cela n’aide en rien.
Comment puis-je forcer wget
à se réinitialiser et à reprendre le téléchargement là où il s'est arrêté une fois la connexion établie et rétablie?
Je voudrais laisser wget
courir et quand je reviendrai, je veux le voir se télécharger, sans attendre avec la vitesse --,-K/s
.
Afin d'éviter les situations --, -K/s
, 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
Ceci réessayera les connexions refusées et les erreurs similaires similaires (--retry-connrefused
), il attendra 1 seconde avant la prochaine tentative (--waitretry
), il attendra un maximum de 20 secondes si aucune donnée n'est reçue, puis réessayez (--read-timeout
), il attendra au maximum 15 secondes avant l'expiration de la connexion initiale (--timeout
), puis il réessayera un nombre infini de fois (-t 0
).
Vous pouvez également vouloir placer ceci dans une boucle while
afin d'éviter toute défaillance du réseau local ou similaire. Dans ce cas, vous devez également ajouter --continue
afin de poursuivre 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 guise de bonus, vous pouvez également utiliser --no-dns-cache
dans le 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.
--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 l'exception d'erreurs fatales du type "connexion refusée" ou "introuvable" (404), qui ne sont pas relancées. .
Cela aiderait-il? Sur askubuntu.com, j'ai trouvé une question très similaire à celle que vous demandez. Voici le lien vers ce site: https://askubuntu.com/questions/72663/how-to-make-wget-retry-download-if-speed-goes-below-certain- seuil