Я только что обновил аппаратную часть своего компьютера (процессор + материнская плата + графическая карта + память + жесткий диск), поэтому необходима установка новой ОС. Я пытался загрузить debian-6.0.6-amd64-netinst.iso
с помощью команды wget
, но скорость была настолько медленной, что я не выдержал. 4Kb/s ~ 17 Kb/s
, медленно, как бегущая черепаха, или еще медленнее, если я использую Chrome.
Я прочитал справочную информацию из wget , похоже, что нет никаких опций, которые могли бы сделать его быстрее.
Есть ли способ сделать wget быстрее? Или можно сделать многопоточную загрузку для загрузки?
PS: моя пропускная способность составляет 4M. Я использую эту команду:
wget -c url http://hammurabi.acc.umu.se/debian-cd/6.0.6/amd64/iso-cd/debian-6.0.6-amd64-netinst.iso
Я попытался axel
по рекомендации Гуфрана , но это сильно разочаровало меня. Моя цель состояла в том, чтобы найти замену CLI для DownThemAll
, потому что он перегружает процессор и жесткий диск и замедляет работу всей системы даже на 8-ядерном Mac Pro. Я также хотел многопоточную замену для wget
и curl
, а не какой-то кусочек скрипта, который запускает несколько их экземпляров. Поэтому я продолжил поиск и нашел то, что я считаю сейчас самым совершенным многопоточным загрузчиком CLI - aria2 . Большая проблема, с которой я столкнулся с axel
, заключалась в том, что он «фальсифицировал» загрузку файлов по SSL. Я поймал это, делая это с tcdump
. Он скачивал https
ссылки как обычные http
. Это действительно разозлило меня, и если бы я не проверил, у меня было бы ложное чувство безопасности. Я сомневаюсь, что многие люди знают об этом серьезном нарушении безопасности. Возвращаясь к aria2
, он более продвинут, чем любой другой загрузчик. Он поддерживает протоколы HTTP (S), FTP, BitTorrent и Metalink, является мультиплатформенным и является партизанской загрузкой. Это максимизирует пропускную способность моего провайдера без нагрузки на процессор или жесткий диск, в отличие от DTA. Страница man является гигантской. Я никогда не буду использовать больше, чем несколько из его многочисленных вариантов. И, кстати, я проверил его производительность 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/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"
Читает текстовый файл в формате:
files.txt
:
dierctory 1
url1
url2
…
directory 2/subdirectory/sub-subdirectory/…
url3
url4
…
…
…
Сценарий считывает имя файла из командная строка:
aria2files.sh files.txt
Он создает каталоги и загружает в них. Он может создавать вложенные каталоги, как показано во втором примере.
Подробнее см. Мой пост Скрипт Bash для загрузки файлов с URL-адресов в указанные каталоги, перечисленные в текстовом файле .
Почему бы не попробовать axel
? Это полноценный загрузчик командных строк.
установите axel
и загрузите spawn по axel -a -n [Num_of_Thread] link1 link2 link3 ...
, где '[Num_of_Thread]'
- количество параллельных соединений, создаваемых для каждой ссылки, которую вы хотите загрузить.
-a
просто показывают улучшенный индикатор выполнения.