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.iso
avec la commande wget
mais la vitesse est si lente que je ne pouvais plus supporter. 4Kb/s ~ 17 Kb/s
, lent comme une tortue en cours d'exécution, 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 qui pourraient accélérer les choses.
Est-il possible de faire wget plus rapidement? Ou est-il possible de le faire multi-threading télécharger?
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
Pourquoi ne pas essayer axel
name__? C'est un téléchargeur à part entière à base de ligne de commande.
install 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 à télécharger.
-a
montre simplement une barre de progression améliorée.
J'ai essayé axel
après la recommandation de Gufran , mais cela m'a énormément déçu. Mon objectif était de trouver un remplaçant CLI pour DownThemAll
car il encombrerait le processeur et le disque dur et ralentirait tout le système, même sur un Mac Pro à 8 cœurs. Je souhaitais également un remplacement multithread pour wget
et curl
, et non un kludge d'un script exécutant plusieurs instances de ceux-ci. J'ai donc cherché plus loin et trouvé ce que je pense être le téléchargeur CLI multithread le plus moderne et le plus moderne qui soit - aria2 . Le gros problème que j'avais avec axel
était qu'il "simulait" le téléchargement de fichiers via SSL. Je l'ai surpris en train de le faire avec tcdump
. Il téléchargeait les liens https
en tant que nom ordinaire http
. 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 revenir à aria2
, il est plus avancé que tout autre téléchargeur. Il prend en charge 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 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 de poursuivre le téléchargement s'il est interrompu, -x 10
et -s 10
autorisent jusqu'à 10 connexions par serveur, et -d "mydir"
envoie le 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 article script 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 .