Comment rendre wget plus rapide ou multithreading?

39

Je viens de mettre à niveau mon matériel informatique (unité centrale + carte mère + carte graphique + mémoire + disque dur), de sorte qu'il est nécessaire d'installer un nouveau système d'exploitation. J'ai essayé de télécharger debian-6.0.6-amd64-netinst.isoavec wgetcommande mais la vitesse est si lente que je ne pouvais pas supporter. 4Kb/s ~ 17 Kb/s, lente comme une tortue en cours d'exécution, ou encore plus lente si j'utilise Chrome.

J'ai lu les informations d'aide de wget , il semble qu'il n'y ait pas d'options qui pourraient accélérer les choses.

Est-il possible de faire wget plus rapidement? Ou est-il possible de faire un téléchargement multi-thread ?

PS: ma bande passante est 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
Teifi
la source
1
wget utilise simplement votre connexion. Donc, si c'est lent, c'est votre connexion avec le serveur. Peut-être que vous êtes lent, peut-être que le serveur est. btw 4mbit = 0.5mb / s, sans parler de la perte, etc.
Dr_Bunsen
@Dr_Bunsenmerci pour vos conseils, j'ai essayé la commande qui @Gufransuggérait axel:, la largeur comparée wget, axelest plus rapide que jamais. Je pense que dans la plupart des situations, le ralentissement de ma vitesse de téléchargement est 1 . quelque chose occupait la bande passante (comme vous l'avez dit: je suis lent ). 2 . single-threading. 3 . le serveur est lent. Mais je n'ai rien à voir avec les points 1 et 3 .
Teifi
@Teifi Une possibilité si le axelmulti-thread fonctionne mieux que wget lorsque vous utilisez le même serveur distant, la latence entre votre boîtier et le serveur distant est très élevée. Vérifiez votre ping sur le serveur distant.
John Siu
Avez-vous essayé HTTrack? httrack.com/page/1/fr/index.html
amanthethy

Réponses:

52

Pourquoi ne pas essayer axel? C'est un téléchargeur à part entière à base de ligne de commande.

Installer axelet télécharger spawn par

axel -a -n [Num_of_Thread] link1 link2 link3 ...

'[Num_of_Thread]'est le nombre de connexions parallèles à créer pour chaque lien à télécharger.

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

Contrairement à de nombreux autres gestionnaires de téléchargement, Axel télécharge toutes les données directement dans le fichier de destination, en utilisant un seul thread. Cela économise du temps à la fin car le programme n'a pas à concaténer toutes les parties téléchargées.

Gufran
la source
Je me demande s’il existe un moyen, peut-être via alias et wrapper, d’utiliser axel when est disponible au lieu de curl ou wget, sauf s’il existe plusieurs paramètres à la ligne de commande.
sorin
1
Je pense que cette proposition n'est pas suffisante pour le téléchargement d'un fichier. S'il vous plaît, corrigez-moi si nécessaire. Ma tentative ici askubuntu.com/q/813483/25388
Léo Léopold Hertz
54

J'ai essayé axelsur Gufran recommandation , mais il m'a énormément déçu. Mon objectif était de trouver un remplaçant pour la CLI DownThemAllcar il encombre le processeur et le disque dur et ralentit tout le système, même sur un Mac Pro à 8 cœurs. Je voulais également un remplacement multithread pour, wgetet curlnon un kludge d'un script qui exécute plusieurs instances de ceux-ci. J'ai donc cherché plus loin et découvert ce que je pense être, à l'heure actuelle, le téléchargeur de CLI multithread le plus moderne et le plus moderne: aria2 . Le gros problème que je rencontrais axelétait qu'il "simulait" le téléchargement de fichiers via SSL. Je l'ai attrapé en train de faire ça avec tcdump. Il téléchargeait des httpsliens comme d'habitudehttp. Cela m'a vraiment fait chier et si je n'avais pas vérifié, j'aurais eu un faux sentiment de sécurité. Je doute que beaucoup de gens soient au courant de cette grave atteinte à la sécurité. Pour en 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. Contrairement à la DTA, elle optimise la bande passante de mon FAI sans charge sur le processeur ou le disque dur. 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é ses performances SSL tcdumpet 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

-cpermet la poursuite de téléchargement si elle est interrompue, -x 10et -s 10permet jusqu'à 10 connexions par serveur et -d "mydir"sorties fichier dans le répertoire mydir.

aria2files.sh:

#!/bin/bash

filename="$1" # 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 au format:

files.txt:

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

Le script lit le nom de 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, voir mon script post Bash permettant de télécharger des fichiers depuis des URL vers des répertoires spécifiés répertoriés dans un fichier texte .

hmj6jmh
la source
Pouvez-vous appliquer votre méthode ici aussi askubuntu.com/q/813483/25388 Ma tentative a échoué aria2c -x10 -s10 http://horatio.cs.nyu.edu/mit/tiny/data/tiny_images.bin.
Léo Léopold Hertz
Merci @ hmj6jmh! Pour mémoire sur un modèle 3 de Rapsberry Pi: wget -4 -c <https://URL/ISO_FILE>me donne ~ 40 Ko / sec ( 87300K .......... .......... 11% 38.7K 4h28mlorsque le même fichier téléchargé avec aria2c --disable-ipv6 -cdonne ~ 250 Ko / sec ( 144MiB/717MiB(20%) CN:1 DL:250KiB ETA:39m3s]).
tuk0z
1
Si vous (comme moi) voulez éviter Sourceforge, aria2 fait partie des référentiels, vous pouvez donc l'installer avecsudo apt install aria2
Bar
Bonne réponse. Pour les sites qui imposent uniquement HTTPS, la axelmise au point automatique ne fonctionne pas. Il semble avoir été mis à jour pour utiliser HTTPS, mais cette version ne figure pas encore dans mes référentiels. aria2a bien fonctionné pour moi.
WindowsEscapist