Comment rendre wget plus rapide ou multithreading?

30

Je viens de mettre à jour mon matériel informatique (cpu + carte mère + carte graphique + mémoire + disque dur), de sorte que l’installation d’un nouveau système d’exploitation soit nécessaire. J'ai essayé de télécharger debian-6.0.6-amd64-netinst.iso avec la commande wget mais la vitesse est si lente que je ne pouvais pas supporter. 4Kb/s ~ 17 Kb/s , lent comme une tortue qui court, ou encore plus lent si j'utilise Chrome.

J'ai lu les informations d'aide de wget , il semble qu'il n'y ait pas d'options pour le rendre plus rapide.

Y a-t-il un moyen de rendre wget plus rapide? Ou est-il possible de le rendre multi-threading ? Télécharger?

PS: ma bande passante est de 4M. J'utilise cette commande:

wget -c url  http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso
    
posée Teifi 07.11.2012 - 10:31
la source

2 réponses

45

Pourquoi ne pas essayer axel ? C'est un téléchargeur entièrement basé sur la ligne de commande. installer axel et spawn download par axel -a -n [Num_of_Thread] link1 link2 link3 ...  où '[Num_of_Thread]' est le nombre de connexions parallèles à créer pour chaque lien que vous souhaitez télécharger.

-a montre simplement une barre de progression améliorée.

    
réponse donnée Gufran 07.11.2012 - 11:07
la source
43

J'ai essayé axel sur la recommandation de Gufran mais cela m'a énormément déçu. Mon objectif était de trouver un remplacement CLI pour DownThemAll , car il désactive le processeur et le disque dur et ralentit l'ensemble du système, même sur un Mac Pro 8 cœurs. Je souhaitais également un remplacement multithread pour wget et curl , et non pas un kludge d'un script exécutant plusieurs instances de ceux-ci. J'ai donc cherché plus loin et trouvé ce que je pense en ce moment est le téléchargeur CLI multithread le plus moderne qui soit - aria2 . Le gros problème avec axel était qu'il simulait le téléchargement de fichiers via SSL. Je l'ai attrapé avec tcdump . Il télécharge les liens https en tant que http ordinaire. Cela m'a vraiment énervé et si je n'avais pas vérifié, j'aurais eu un faux sentiment de sécurité. Je doute que beaucoup de personnes connaissent cette grave violation de la sécurité. Pour revenir à aria2 , il est plus avancé que tout autre téléchargeur. Il supporte les protocoles HTTP (S), FTP, BitTorrent et Metalink, est multiplateforme et constitue une guérilla de téléchargement. Il maximise la bande passante de mon fournisseur de services Internet sans charge sur le processeur ou le disque dur, contrairement à DTA. La page de manuel est gigantesque. Je n'utiliserai jamais plus que quelques unes de ses nombreuses options. Et oh, BTW, j'ai vérifié sa performance SSL avec tcdump et il est solide, pas faux. J'ai écrit un script qui imite le comportement de DTA, sinon sa commodité.

La commande de base que j'utilise pour obtenir la bande passante maximale est

aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL

-c permet la poursuite du téléchargement s'il est interrompu, -x 10 et -s 10 autorisent jusqu'à 10 connexions par serveur, et -d "mydir" affiche le fichier dans le répertoire mydir .

aria2files.sh :

#!/bin/bash

filename="" # get filename from command line argument

while read -r line
do
    if [ "$line" ] # skip blank lines
    then
        if [[ "$line" =~ (https?|ftp)\:\/\/ ]] # line contains a URL, download file
        then
            echo "URL: '$line'"
            aria2c --file-allocation=none -c -x 10 -s 10 -d "$currdir" "$line"
        else # line contains a directory name, create directory if not already present
            echo "Directory: '$line'"
            currdir="$line"
            if [ ! -d "$currdir" ]
            then
                mkdir -p "$currdir" # '-p' enables creation of nested directories in one command
            fi
        fi
    fi
done < "$filename"

Il lit un fichier texte du format:

files.txt :

dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…

Le script lit le nom du fichier depuis la ligne de commande:

aria2files.sh files.txt

Il crée les répertoires et les télécharge. Il peut créer des répertoires imbriqués comme indiqué dans le deuxième exemple.

Pour plus de détails, consultez mon post Script Bash pour télécharger des fichiers depuis des URL vers des répertoires spécifiques répertoriés dans un texte. fichier .

    
réponse donnée hmj6jmh 07.08.2014 - 04:23
la source

Lire d'autres questions sur les étiquettes