Эта программа поставляется без гарантии. Вы должны использовать эту программу на свой страх и риск.
aria2 — утилита для скачивания файлов. Поддерживаемые протоколы: HTTP(S), FTP, SFTP, BitTorrent и Metalink. aria2 может загружать файл из нескольких источников/протоколов и пытается использовать максимальную пропускную способность загрузки. Он поддерживает одновременную загрузку файла с HTTP(S)/FTP/SFTP и BitTorrent, в то время как данные, загруженные с HTTP(S)/FTP/SFTP, загружаются в поток BitTorrent. Используя контрольные суммы фрагментов Metalink, aria2 автоматически проверяет фрагменты данных при загрузке файла, такого как BitTorrent.
Страница проекта находится по адресу https://aria2.github.io/.
Чтобы узнать, как использовать aria2, см. онлайн-руководство по aria2 (русский перевод, португальский перевод).
Вот список функций:
Интерфейс командной строки
Загрузка файлов через HTTP(S)/FTP/SFTP/BitTorrent
Сегментированная загрузка
Поддержка Metalink версии 4 (RFC 5854) (HTTP/FTP/SFTP/BitTorrent)
Поддержка Metalink версии 3.0 (HTTP/FTP/SFTP/BitTorrent)
Поддержка Metalink/HTTP (RFC 6249)
Реализация HTTP/1.1
Поддержка HTTP-прокси
Поддержка аутентификации HTTP BASIC
Поддержка аутентификации HTTP-прокси
Хорошо известные переменные среды для прокси: http_proxy
, https_proxy
, ftp_proxy
, all_proxy
и no_proxy
HTTP gzip, поддержка кодирования контента deflate
Проверьте одноранговый узел, используя данный доверенный сертификат CA в HTTPS.
Аутентификация сертификата клиента в HTTPS
Поддержка кодирования фрагментированной передачи
Загрузите файлы cookie из файла, используя формат Firefox3, Chromium/Google Chrome и формат Mozilla/Firefox (1.x/2.x)/Netscape.
Сохраняйте файлы cookie в формате Mozilla/Firefox (1.x/2.x)/Netscape.
Поддержка пользовательского HTTP-заголовка
Поддержка постоянных подключений
FTP/SFTP через HTTP-прокси
Регулирование скорости загрузки/выгрузки
Расширения BitTorrent: быстрое расширение, DHT, PEX, MSE/PSE, Multi-Tracker, UDP-трекер.
BitTorrent WEB-раздача. aria2 запрашивает кусок размером больше, чем размер куска, чтобы уменьшить накладные расходы на запрос. Он также поддерживает конвейерные запросы с размером фрагмента.
Обнаружение локального узла BitTorrent
Полностью переименуйте/измените структуру каталогов загрузок BitTorrent.
Интерфейс JSON-RPC (через HTTP и WebSocket)/XML-RPC
Запуск как процесс-демон
Выборочная загрузка в многофайловом торренте/Металинке
Проверка контрольной суммы чанка в Metalink
Можно отключить сегментированную загрузку в Metalink
Поддержка Netrc
Поддержка файлов конфигурации
URI загрузки, найденные в текстовом файле или стандартном вводе, а также каталог назначения и имя выходного файла можно указать дополнительно.
Поддержка параметризованного URI
Поддержка IPv6 с Happy Eyeballs
Дисковый кеш для снижения активности диска
Для версии aria2 мы используем 3 числа: MAJOR.MINOR.PATCH. Мы будем отправлять НЕБОЛЬШИЕ обновления 15 числа каждого месяца. Мы можем пропустить выпуск, если с момента последнего выпуска не было никаких изменений. Замораживание функций и документации происходит за 10 дней до дня выпуска (5-го числа месяца) для команд переводчиков. Примерно в этот день мы поднимем вопрос о предстоящем релизе.
Мы можем выпускать выпуски PATCH между обычными выпусками, если у нас есть проблемы с безопасностью.
Версия MAJOR пока останется на уровне 1.
Мы храним исходный код на Github: https://github.com/aria2/aria2.
Чтобы получить последнюю версию исходного кода, выполните следующую команду:
$ git клон https://github.com/aria2/aria2.git
Это создаст каталог aria2 в вашем текущем каталоге, и там будут храниться исходные файлы.
функции | зависимость |
---|---|
HTTPS | OSX, GnuTLS, OpenSSL или Windows |
SFTP | libssh2 |
БитТоррент | Никто. Необязательно: libnettle+libgmp или libgcrypt или OpenSSL (см. примечание). |
Металинк | libxml2 или Expat. |
Контрольная сумма | Никто. Необязательно: OSX, libnettle, libgcrypt, OpenSSL или Windows (см. примечание). |
gzip, сдуть через HTTP | zlib |
Асинхронный DNS | Си-Арес |
Файл cookie Firefox3/Chromium | libsqlite3 |
XML-RPC | libxml2 или Expat. |
JSON-RPC через WebSocket | libnettle или libgcrypt или OpenSSL |
Примечание
libxml2 имеет приоритет над Expat, если установлены обе библиотеки. Если вы предпочитаете Expat, запустите configure с --without-libxml2
.
Примечание
В Apple OSX предпочтительна поддержка SSL/TLS на уровне ОС. Следовательно, на этой платформе не требуется ни GnuTLS, ни OpenSSL. Если вы хотите отключить это поведение, запустите configure с --without-appletls
.
GnuTLS имеет приоритет над OpenSSL, если установлены обе библиотеки. Если вы предпочитаете OpenSSL, запустите configure с --without-gnutls
--with-openssl
.
В Windows доступна реализация SSL, основанная на собственных возможностях Windows SSL (Schannel), и она будет предпочтительной. Следовательно, на этой платформе не требуется ни GnuTLS, ни OpenSSL. Если вы хотите отключить это поведение, запустите configure с --without-wintls
.
Примечание
В Apple OSX поддержка контрольной суммы на уровне ОС будет предпочтительной, если только aria2 не настроен с помощью --without-appletls
.
libnettle имеет приоритет над libgcrypt, если установлены обе библиотеки. Если вы предпочитаете libgcrypt, запустите configure с --without-libnettle --with-libgcrypt
. Если OpenSSL выбран вместо GnuTLS, ни libnettle, ни libgcrypt использоваться не будут.
Если ни одна из дополнительных зависимостей не установлена, будет использоваться внутренняя реализация, поддерживающая только md5 и sha1.
В Windows доступна реализация SSL, основанная на собственных возможностях Windows, и она будет предпочтительнее, если только aria2 не настроен с помощью --without-wintls
.
Пользователь может иметь одну из следующих конфигураций SSL и криптографических библиотек:
OpenSSL
GnuTLS + libgcrypt
GnuTLS + libnettle
Apple TLS (только OSX)
Windows TLS (только для Windows)
Вы можете отключить поддержку BitTorrent и Metalink, указав --disable-bittorrent
и --disable-metalink
в скрипте настройки соответственно.
Чтобы включить поддержку асинхронного DNS, вам понадобится c-ares.
c-ares: http://c-ares.haxx.se/
aria2 в основном написана на C++. Изначально он был написан на основе стандартных возможностей C++98/C++03. Сейчас мы переносим aria2 на стандарт C++11. Для текущего исходного кода требуется компилятор, поддерживающий C++11. Для известных компиляторов, таких как g++ и clang, должен поддерживаться флаг -std=c++11
или -std=c++0x
.
Чтобы собрать aria2 из исходного пакета, вам потребуются следующие пакеты разработки (название пакета может отличаться в зависимости от используемого вами дистрибутива):
libgnutls-dev (требуется для HTTPS, BitTorrent, поддержки контрольной суммы)
nettle-dev (требуется для BitTorrent, поддержка контрольной суммы)
libgmp-dev (требуется для BitTorrent)
libssh2-1-dev (требуется для поддержки SFTP)
libc-ares-dev (требуется для поддержки асинхронного DNS)
libxml2-dev (требуется для поддержки Metalink)
zlib1g-dev (требуется для gzip, поддержка декодирования deflate в HTTP)
libsqlite3-dev (требуется для поддержки файлов cookie Firefox3/Chromium)
pkg-config (требуется для обнаружения установленных библиотек)
Вы можете использовать libgcrypt-dev вместо nettle-dev и libgmp-dev:
libgpg-error-dev (требуется для BitTorrent, поддержка контрольной суммы)
libgcrypt-dev (требуется для BitTorrent, поддержка контрольной суммы)
Вы можете использовать libssl-dev вместо libgnutls-dev, nettle-dev, libgmp-dev, libgpg-error-dev и libgcrypt-dev:
libssl-dev (требуется для HTTPS, BitTorrent, поддержки контрольной суммы)
Вы можете использовать libexpat1-dev вместо libxml2-dev:
libexpat1-dev (требуется для поддержки Metalink)
В Fedora вам потребуются следующие пакеты: gcc, gcc-c++, kernel-devel, libgcrypt-devel, libxml2-devel, openssl-devel, gettext-devel, cppunit.
Если вы загрузили исходный код из репозитория git, вам необходимо установить следующие пакеты, чтобы получить макросы autoconf:
libxml2-dev
libcppunit-dev
автоконф
автопроизводитель
autotools-dev
автопоинт
libtool
И запустите следующую команду, чтобы сгенерировать скрипт настройки и другие файлы, необходимые для сборки программы:
$ автореконф -я
Кроме того, вам понадобится Sphinx для создания man-страницы.
Если вы собираете aria2 для Mac OS X, взгляните на make-файл makerelease-osx.mk GNU Make.
Самый быстрый способ собрать aria2 — сначала запустить скрипт configure:
$ ./настроить
Чтобы создать статически связанную aria2, используйте параметр командной строки ARIA2_STATIC=yes
:
$ ./configure ARIA2_STATIC=да
После завершения настройки запустите make
для компиляции программы:
$ сделать
См. раздел «Кросс-компиляция двоичного файла Windows», чтобы создать двоичный файл Windows. См. раздел «Кросс-компиляция двоичного файла Android», чтобы создать двоичный файл Android.
Сценарий настройки проверяет доступные библиотеки и включает как можно больше функций, за исключением экспериментальных функций, не включенных по умолчанию.
Начиная с версии 1.1.0, aria2 по умолчанию проверяет сертификат HTTPS-серверов. Если вы выполняете сборку с использованием OpenSSL или последней версии GnuTLS, которая имеет функцию gnutls_certificate_set_x509_system_trust()
и библиотека правильно настроена для поиска общесистемного хранилища сертификатов CA, aria2 автоматически загрузит эти сертификаты при запуске. Если это не так, я рекомендую указать путь к файлу пакета CA. Например, в Debian путь к файлу пакета CA — «/etc/ssl/certs/ca-certificates.crt» (в пакете ca-certificates). Это может варьироваться в зависимости от вашего дистрибутива. Вы можете предоставить его для настройки скрипта, используя --with-ca-bundle option
:
$ ./configure --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt' $ сделать
Без опции --with-ca-bundle
вы столкнетесь с ошибкой при доступе к серверам HTTPS, поскольку сертификат невозможно проверить без пакета CA. В таком случае вы можете указать файл пакета CA, используя опцию --ca-certificate
aria2. Если у вас не установлен файл пакета CA, последним средством является отключить проверку сертификата с помощью --check-certificate=false
.
Использование собственной реализации OSX (AppleTLS) и/или Windows (WinTLS) автоматически использует хранилище системных сертификатов, поэтому --with-ca-bundle
не требуется и будет игнорироваться при использовании этих реализаций.
По умолчанию файл bash_completion с именем aria2c
устанавливается в каталог $prefix/share/doc/aria2/bash_completion
. Чтобы изменить каталог установки файла, используйте опцию --with-bashcompletiondir
.
После make
исполняемый файл находится по адресу src/aria2c
.
aria2 использует CppUnit для автоматического модульного тестирования. Чтобы запустить модульный тест:
$ сделать чек
В этом разделе мы опишем, как собрать двоичный файл Windows с помощью кросс-компилятора mingw-w64 (http://mingw-w64.org/doku.php) в Debian Linux. MinGW (http://www.mingw.org/), возможно, не сможет собрать aria2.
Самый простой способ собрать двоичный файл Windows — использовать Dockerfile.mingw. См. Dockerfile.mingw, как создать двоичный файл. Если вы не можете использовать Dockerfile, продолжайте читать следующие параграфы.
По сути, после компиляции и установки зависимых библиотек вы можете выполнить кросс-компиляцию, просто передав соответствующий параметр --host
и указав переменные CPPFLAGS
, LDFLAGS
и PKG_CONFIG_LIBDIR
для настройки. Для удобства и снижения затрат на собственную разработку мы предоставляем более простой способ настройки параметров сборки.
Сценарий mingw-config
— это оболочка сценария настройки для mingw-w64. Мы используем его для создания официальной сборки Windows. В этом сценарии предполагается, что для кросс-компиляции созданы следующие библиотеки:
с-ареса
эмигрант
sqlite3
zlib
libssh2
cppunit
Некоторые переменные среды можно настроить для изменения настроек сборки:
HOST
кросс-компиляция для создания программ для запуска на HOST
. По умолчанию используется i686-w64-mingw32
. Чтобы создать 64-битный двоичный файл, укажите x86_64-w64-mingw32
.
PREFIX
Префикс каталога, в котором установлены зависимые библиотеки. По умолчанию это /usr/local/$HOST
. -I$PREFIX/include
будет добавлен в CPPFLAGS
. -L$PREFIX/lib
будет добавлен в LDFLAGS
. $PREFIX/lib/pkgconfig
будет установлен в PKG_CONFIG_LIBDIR
.
Например, чтобы собрать 64-битный двоичный файл, сделайте следующее:
$ HOST=x86_64-w64-mingw32 ./mingw-config
Если вам нужна dll libaria2 с --enable-libaria2
, не используйте ARIA2_STATIC=yes
и подготовьте версию DLL внешних библиотек.
В этом разделе мы опишем, как собрать двоичный файл Android с помощью кросс-компилятора Android NDK в Debian Linux.
На момент написания статьи Android NDK r21e должен скомпилировать aria2 без ошибок.
Сценарий android-config
— это оболочка сценария настройки для сборки Android. Мы используем его для создания официальной сборки Android. В этом сценарии предполагается, что для кросс-компиляции созданы следующие библиотеки:
с-арес
OpenSSL
эмигрант
zlib
libssh2
При создании вышеуказанных библиотек обязательно отключите общую библиотеку и включите только статическую библиотеку. Мы собираемся связать эти библиотеки статически.
android-config
предполагает, что определены переменные среды $ANDROID_HOME
и $NDK
.
В настоящее время мы используем Android NDK r21e. $NDK
должен указывать на каталог Android NDK. Инструменты сборки находятся в папке $NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/
.
Все зависимые библиотеки должны быть установлены в $ANDROID_HOME/usr/local
.
После android-config
запустите make
для компиляции исходников.
Sphinx используется для создания документации. Страницы руководства aria2 будут созданы при запуске make
, если они не обновлены. Вы также можете создать HTML-версию man-страницы aria2, выполнив команду make html
. Руководство в формате HTML также доступно онлайн (перевод на русский, перевод на португальский).
Имя загружаемого файла определяется следующим образом:
однофайловый режим
Если ключ «имя» присутствует в файле .torrent, именем файла является значение ключа «имя». В противном случае имя файла представляет собой базовое имя файла .torrent, к которому добавляется «.file». Например, файл .torrent — «test.torrent», тогда имя файла — «test.torrent.file». Каталог для хранения загруженного файла можно указать с помощью опции -d.
многофайловый режим
Создается полная структура каталогов/файлов, упомянутая в файле .torrent. Каталог для хранения верхнего каталога загруженных файлов можно указать с помощью опции -d.
Перед началом загрузки при необходимости создается полная структура каталогов. По умолчанию aria2 открывает не более 100 файлов, упомянутых в файле .torrent, и напрямую записывает и читает эти файлы. Количество файлов, открываемых одновременно, можно контролировать с помощью опции --bt-max-open-files
.
aria2 поддерживает DHT, совместимый с основной линией. По умолчанию таблица маршрутизации для IPv4 DHT сохраняется в $XDG_CACHE_HOME/aria2/dht.dat
, а таблица маршрутизации для IPv6 DHT сохраняется в $XDG_CACHE_HOME/aria2/dht6.dat
, если файлы не существуют в $HOME/.aria2/dht.dat
или $HOME/.aria2/dht6.dat
. aria2 использует один и тот же номер порта для прослушивания IPv4 и IPv6 DHT.
Поддержка UDP-трекера включается при включении IPv4 DHT. Номер порта трекера UDP используется совместно с DHT. Используйте опцию --dht-listen-port
, чтобы изменить номер порта.
Опция -o
используется для изменения имени самого файла .torrent, а не имени файла в файле .torrent. Для этой цели используйте вместо этого опцию --index-out
.
Номера портов, которые aria2 использует по умолчанию, составляют 6881–6999 для TCP и UDP.
aria2 не настраивает переадресацию портов автоматически. Пожалуйста, настройте маршрутизатор или брандмауэр вручную.
Максимальное количество пиров — 55. Этот предел может быть превышен, если скорость загрузки низкая. Эту скорость загрузки можно настроить с помощью опции --bt-request-peer-speed-limit
.
Начиная с версии 0.10.0, aria2 прекращает отправку сообщений запроса после завершения выборочной загрузки.
Текущая реализация поддерживает HTTP(S)/FTP/SFTP/BitTorrent. Остальные протоколы P2P игнорируются. Поддерживаются документы Metalink4 (RFC 5854) и Metalink версии 3.0.
Для проверки контрольной суммы поддерживаются md5, sha-1, sha-224, sha-256, sha-384 и sha-512. Если предусмотрено несколько алгоритмов хэширования, aria2 использует более сильный. Если проверка контрольной суммы всего файла не удалась, aria2 не повторяет загрузку и просто завершает работу с ненулевым кодом возврата.
Поддерживаемые пользовательские настройки: версия, язык, местоположение, протокол и операционная система.
Если в файле Metalink указаны контрольные суммы фрагментов, aria2 автоматически проверяет фрагменты данных во время загрузки. Такое поведение можно отключить с помощью параметра командной строки.
Если подпись включена в файл Metalink, aria2 сохраняет ее как файл после завершения загрузки. Имя файла: имя файла загрузки + «.sig». Если такой же файл уже существует, файл подписи не сохраняется.
В Metalink4 многофайловый торрент мог появиться в элементе metalink:metaurl. Поскольку aria2 не может загружать два одинаковых торрента одновременно, aria2 группирует файлы в элементе metalink:file, который имеет один и тот же мета-адрес BitTorrent, и загружает их из одного потока BitTorrent. По сути, это многофайловая торрент-загрузка с выбором файла, поэтому также создаются соседние файлы, которых нет в документе Metalink, но которые имеют одну и ту же часть с выбранным файлом.
Если относительный URI указан в элементе metalink:url или metalink:metaurl, aria2 использует URI файла Metalink в качестве базового URI для разрешения относительного URI. Если относительный URI обнаружен в файле Metalink, который считывается с локального диска, aria2 использует значение опции --metalink-base-uri
в качестве базового URI. Если этот параметр не указан, относительный URI будет игнорироваться.
Текущая реализация использует только ссылки rel=duplication. aria2 понимает поля заголовка дайджеста и проверяет, соответствуют ли они значению дайджеста из других источников. Если оно отличается, разорвите соединение. aria2 также использует это значение дайджеста для проверки контрольной суммы после завершения загрузки. aria2 распознает географическое значение. Чтобы сообщить aria2, какое местоположение вы предпочитаете, вы можете использовать опцию --metalink-location
.
Поддержка netrc включена по умолчанию для HTTP(S)/FTP/SFTP. Чтобы отключить поддержку netrc, укажите параметр командной строки -n. Ваш файл .netrc должен иметь правильные разрешения (600).
Сервер WebSocket, встроенный в aria2, реализует спецификацию, определенную в RFC 6455. Поддерживаемая версия протокола — 13.
libaria2 — это библиотека C++, которая предлагает клиентскому коду функциональность aria2. В настоящее время libaria2 не собирается по умолчанию. Чтобы включить libaria2, используйте параметр конфигурации --enable-libaria2
. По умолчанию создается только общая библиотека. Чтобы создать статическую библиотеку, также используйте параметр конфигурации --enable-static
. См. документацию libaria2, чтобы узнать, как использовать API.
Онлайн-руководство aria2
https://aria2.github.io/
RFC 959 ПРОТОКОЛ ПЕРЕДАЧИ ФАЙЛОВ (FTP)
RFC 1738 унифицированные указатели ресурсов (URL)
Расширения FTP RFC 2428 для IPv6 и NAT
RFC 2616 Протокол передачи гипертекста — HTTP/1.1
Расширения RFC 3659 для FTP
RFC 3986 Единый идентификатор ресурса (URI): общий синтаксис
RFC 4038 Прикладные аспекты перехода на IPv6
RFC 5854 Формат описания загрузки Metalink
RFC 6249 Metalink/HTTP: зеркала и хеши
RFC 6265 Механизм управления состоянием HTTP
RFC 6266 Использование поля заголовка Content-Disposition в протоколе передачи гипертекста (HTTP)
RFC 6455 Протокол WebSocket
RFC 6555 «Счастливые глаза: успех с хостами с двумя стеками»
Спецификация протокола BitTorrent
BitTorrent: протокол DHT
BitTorrent: быстрое расширение
BitTorrent: расширение трекера IPv6
BitTorrent: расширение для одноранговых узлов для отправки файлов метаданных
BitTorrent: протокол расширения
BitTorrent: расширение метаданных мультитрекера
BitTorrent: протокол UDP Tracker для BitTorrent и спецификация протокола BitTorrent udp-tracker.
BitTorrent: WebSeed — раздача HTTP/FTP (стиль GetRight)
BitTorrent: частные торренты
BitTorrent: расширения BitTorrent DHT для IPv6
BitTorrent: шифрование потока сообщений
Kademlia: одноранговая информационная система, основанная на метрике XOR