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 .