Я пытался axel
на Гуфранэто рекомендация, но она меня очень разочаровала. Моя цель состояла в том, чтобы найти замену CLI для DownThemAll
потому что это перегружает процессор и жесткий диск и замедляет работу всей системы даже на 8-ядерном Mac Pro. Я также хотел многопоточную замену для wget
и curl
, а не какой-то клудж скрипта, который запускает несколько их экземпляров. Поэтому я поискал дальше и нашел то, что, как мне кажется, прямо сейчас является самым современным многопоточным загрузчиком CLI, который только существует -- ариа2. Большая проблема, с которой я столкнулся с axel
заключалось в том, что он "подделывал" загрузку файлов по протоколу SSL. Я поймал его за этим занятием с tcdump
. Это была загрузка https
ссылки как обычные http
. Это действительно разозлило меня, и если бы я не проверил, у меня было бы ложное чувство безопасности. Я сомневаюсь, что многие люди знают об этом серьезном нарушении безопасности. Возвращаясь к aria2
, он более продвинутый, чем любой другой загрузчик. Он поддерживает протоколы HTTP (S), FTP, BitTorrent и Metalink, является мультиплатформенным и является партизаном загрузки. Это максимально увеличивает пропускную способность моего интернет-провайдера без нагрузки на процессор или жесткий диск, в отличие от DTA. Справочная страница просто гигантская. Я никогда не буду использовать больше, чем несколько из его многочисленных вариантов. И, кстати, я проверил его производительность SSL с помощью tcdump
и она прочная, а не поддельная. Я написал сценарий, который имитирует поведение DTA, если не его удобство.
Основная команда, которую я использую для получения максимальной пропускной способности, - это
aria2c --file-allocation=none -c -x 10 -s 10 -d "mydir" URL
-c
позволяет продолжить загрузку, если она прерывается, -x 10
и -s 10
разрешить до 10 подключений на сервер и -d "mydir"
выводит файл в каталог mydir
.
aria2files.sh
:
#!/bin/bashfilename="$1" # get filename from command line argumentwhile read -r linedo 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 fidone < "$filename"
Он считывает текстовый файл формата:
files.txt
:
dierctory 1url1url2…directory 2/subdirectory/sub-subdirectory/…url3url4………
Скрипт считывает имя файла из командной строки:
aria2files.sh files.txt
Он создает каталоги и загружает их. Он может создавать вложенные каталоги, как показано во втором примере.
Для получения более подробной информации см. Мой пост Скрипт Bash для загрузки файлов с URL-адресов в указанные каталоги, перечисленные в текстовом файле.