J'ai essayé axel
sur Gufran mais il m'a énormément déçu. Mon but était de trouver un remplacement en CLI pour DownThemAll
parce qu'il monopolise le processeur et le disque dur et ralentit l'ensemble du système, même sur un Mac Pro à 8 cœurs. Je voulais aussi un remplacement multithread de wget
y curl
et non pas une sorte de script qui en exécute plusieurs instances. J'ai donc cherché plus loin et j'ai trouvé ce que je pense être, à l'heure actuelle, l'ultime téléchargeur CLI multithreadé le plus moderne qui existe aria2 . Le gros problème que j'avais avec axel
était qu'il faisait semblant de télécharger des fichiers sur SSL. Je l'ai surpris à faire ça avec tcdump
. Il téléchargeait https
comme des liens ordinaires http
. 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 gens soient au courant de cette grave violation de la sécurité. Pour en 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 est un guérillero du téléchargement. Il maximise la bande passante de mon FAI sans aucune charge sur le CPU 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é ses performances SSL avec tcdump
et c'est solide, pas faux. J'ai écrit un script qui imite le comportement de DTA, si ce n'est sa commodité.
La commande de base que j'utilise pour obtenir la bande passante maximale est la suivante
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
y -s 10
autoriser jusqu'à 10 connexions par serveur, et -d "mydir"
sort 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 du fichier à partir de la ligne de commande :
aria2files.sh files.txt
Il crée les répertoires et y effectue les téléchargements. Il peut créer des répertoires imbriqués comme le montre le deuxième exemple.
Pour plus de détails, voir mon billet Bash script pour télécharger des fichiers à partir d'URL vers des répertoires spécifiques listés dans un fichier texte. .