Когда нужно вытянуть ISO-образ на восемь гигабайт, а сервер отдаёт максимум мегабайт в секунду на одно соединение, обычная загрузка превращается в ожидание на весь вечер. Aria2 ломает это ограничение: файл режется на куски, каждый кусок качается своим соединением, и медленный сервер внезапно отдаёт суммарно в десятки раз больше. Добавьте сюда поддержку BitTorrent-протокола для легальных раздач вроде образов дистрибутивов, управление через RPC из скриптов и chrome-подобный веб-интерфейс - и получится инструмент, который стоит освоить один раз и навсегда. Разбираем реальную настройку: многопоточные закачки, torrent-режим, фоновый процесс aria2c и RPC-управление.
Многопоточная загрузка, как aria2 ускоряет один файл
Механизм прост: сервер, поддерживающий Range-запросы, отдаёт файл по диапазонам байт. Aria2 запрашивает разные диапазоны одновременно из нескольких соединений, и суммарная скорость упирается уже не в лимит одного соединения, а в ваш канал или в общий потолок сервера. Типовая команда: aria2c -x 16 -s 16 https://mirror.example.com/ubuntu-24.04.iso, где -x задаёт максимум соединений на сервер, а -s - число частей, на которые разбивается загрузка.
Практика подсказывает диапазоны: -x 8 при -s 8 это щадящий режим для обычных зеркал, -x 16 -s 16 усиливает эффект на толстых каналах. Выше шестнадцати лезть бессмысленно: сервер начинает отвечать отказами 429 или просто капом на IP, а зеркала дистрибутивов поддерживаются волонтёрами, и наглеть не к месту. Утилита сама подскажет, есть ли вообще выигрыш: в выводе видно агрегированную скорость DL, и если она равна одиночному потоку wget - значит, сервер уже отдаёт всё что может.
Полезные дополнения: -c включает возобновление оборванной загрузки (aria2 хранит файл управления .aria2 рядом с закачкой, и пока он на месте, процесс начнётся с обрыва), -d задаёт каталог назначения, -o переименовывает файл, а --max-download-limit=5M ограничивает суммарную скорость, чтобы загрузка не душила видеозвонок в соседней комнате. Для списка файлов работает -i urls.txt, где каждая строка это отдельный URL, и тогда закачки идут последовательно или параллельно по -j, максимальному числу одновременных заданий.
BitTorrent-режим, magnet-ссылки и torrent-файлы для легальных раздач
У aria2 встроен BitTorrent-клиент, и для свежих дистрибутивов это часто быстрейший способ: ubuntu и многие другие проекты рассылают ISO именно раздачами. Команда прямолинейна: aria2c "magnet:?xt=urn:btih:..." или aria2c release.torrent с файлом метаданных. Опции контролируют сетевое поведение: --max-upload-limit=50K ограничивает отдачу, --seed-time=0 отключает раздачу после завершения (на домашнем канале с дорогим аплоадом это разумно), --bt-max-peers и --bt-request-peer-speed-limit управляют тонкостями, которые нужны редко.
Важные параметры порта: BitTorrent слушает TCP и UDP на порту, который задаётся --listen-port=51413, и для полноценной работы стоит пробросить его на роутере, иначе клиент может только инициировать соединения и упустит half-open лимиты на популярных раздачах. DHT работает из коробки и подхватывает пиры без трекеров. Для проверки, что порт виден снаружи, годится любой онлайн-чекер портов - открытый порт заметно ускоряет swarm.
Комбинация протоколов это фирменная фишка: aria2c file.torrent https://mirror.example.com/file.iso заставит клиент собирать файл и с торрента, и по HTTP одновременно, дополняя недостающие куски из обоих источников. Для образов дистрибутивов, раздаваемых и так, и эдак, это быстрейший из возможных способов получить целый файл.
Фоновый режим и RPC, веб-интерфейс и автоматизация
Для постоянного использования aria2 запускается фоновым процессом: aria2c --enable-rpc --rpc-listen-all=false --rpc-listen-port=6800 --daemon, а дальше очередью управляют через JSON-RPC на 6800 порту. Аутентификация делается секретом: --rpc-secret=длинная-строка, и тогда в RPC-методах первым параметром идёт token:секрет. Включённый по сети RPC без секрета - это зло: любой в сети может добавить закачку на вашу машину, поэтому либо localhost, либо секрет.
С веб-интерфейсом жить удобнее: популярный вариант - статический клиент AriaNg, который раздаётся любым веб-сервером или даже просто открывается файлом из каталога с dist, после чего в настройках вписывается адрес RPC и секрет. Получается аккуратная панель закачек, которая работает на вашем сервере и доступна с ноутбука. Для headless-NAS это стандартная схема: NAS крутит aria2c в фоне, AriaNg распространяется с того же устройства, управление идёт из браузера любого компьютера домашней сети.
Автоматизация через RPC удобна из скриптов: добавление закачки это POST с методом aria2.addUri, массивом URL и опциями; статус - aria2.tellStatus с gid задания. Простая обёртка на bash с curl и jq превращает это в пару функций: add_download URL и wait_download gid, и дальше скачивание встраивается в любые пайплайны: ночные бэкапы, синхронизация образов, подготовка артефактов в CI.
Постоянность конфигурации обеспечивает файл aria2.conf, подаваемый через --conf-path: в него удобно сложить постоянные опции вроде dir=/downloads, log, max-concurrent-downloads=5, save-session и input-file. Механика save-session записывает незавершённые закачки в sess-файл на выключении, а input-file на старте их поднимает - так фоновый процесс переживает перезагрузку сервера без потери очереди.
Полный рабочий конфиг для домашнего сервера
Сложим всё в конфиг, который годами работает у многих на домашнем NAS:
dir=/srv/downloads
continue=true
max-concurrent-downloads=5
max-connection-per-server=8
split=8
max-download-limit=0
max-upload-limit=50K
seed-time=0
listen-port=51413
enable-rpc=true
rpc-listen-port=6800
rpc-secret=меняйте-на-длинный-случайный
save-session=/var/lib/aria2/session.txt
input-file=/var/lib/aria2/session.txt
save-session-interval=60
log=/var/log/aria2.log
log-level=warn
file-allocation=falloc
Пояснения к выбору: file-allocation=falloc резервирует место мгновенно и уменьшает фрагментацию на ext4 и XFS, но отжирает диск сразу - на тесных массивах используют none. save-session-interval заставляет фоновый процесс раз в минуту сбрасывать очередь на диск, что уменьшает потери при внезапном отключении питания сервера. Запуск оформляется systemd-юнитом с User=aria2 и директивой LimitNOFILE=65535, потому что торренты любят держать много соединений.
Производительность, диагностика и границы
Если скорость не радует, смотрим по порядку. Увеличивается ли DL при росте -x: если нет, ограничение не в соединениях, а в канале или сервере. Для торрентов проверяется число пиров: на редких раздачах двух сидов скорость определяется их аплоадом, и никакие настройки этого не изменят. На стороне дисков: --disk-cache=64M помогает сгладить запись на HDD из множества потоков, а на NVMe эффекта почти нет. На всякий случай проверяется и метрика самого сервера: iostat -x 1 покажет, не упёрся ли диск, который стал бутылочным горлышком быстрее сети.
Ограничения инструмента тоже стоит знать честно. Не все зеркала поддерживают Range: при редиректе на CDN с signed URL частенько всё отлично, но на стримовых ответах с chunked-кодированием многопоточность бессильна, и aria2 упадёт в один поток молча. FTP-серверы и транзитные шлюзы имеют свои капризы с параллельностью. А ещё сверхагрессивный -x 64 с вашего домашнего IP это способ быстро попасть в бан на ближайшем зеркале, так что корректность важнее жадности.
Вывод по практике однозначный: aria2 это усилитель того, что уже есть у источника. На зеркалах с ограничением per-connection она великолепна, на торрентах с живым swarm тоже, а для всего остального она хотя бы не мешает и добавляет RPC, резюм и управление очередью как у серьёзного download-менеджера. Установленная на домашний сервер один раз, она снимает с ваших плеч целый класс задач 'скачать вон тот большой файл и положить в общую папку', и это само по себе хороший повод подружиться с инструментом поближе.
## Проверка целостности, checksums и GPG после загрузки
Скачанный образ ещё не значит целый образ, особенно после торрента на нестабильном канале. Для ISO дистрибутивов привычная последовательность: рядом с файлом на зеркале лежит SHA256SUMS, и после загрузки выполняется sha256sum -c SHA256SUMS --ignore-missing. Aria2 умеет и сама: параметр --checksum=sha-256=хеш свличает итоговый файл с эталоном и удаляет битую закачку при несовпадении, что удобно в автоматизации, где файл сразу уезжает дальше по конвейеру.
В BitTorrent-режиме контроль встроен в протокол: каждый piece сверяется по хешу из метаданных, и повреждённые куски перекачиваются автоматически - именно поэтому торренты для образов так надёжны на плохих каналах. Но внешняя сверка с сайта проекта всё равно остаётся здравым шагом: сверка по SHA256SUMS защищает ещё и от сценария, когда сам файл зеркала на площадке оказался подменённым.
Пакетные сценарии, список файлов, куки и уведомления
Для регулярного вытягивания наборов файлов удобен входной файл расширенного формата aria2, где у каждой строки-URL есть параметры: out=имя, dir=каталог, checksum, header=... Последний особенно практичен: private-зеркала требуют авторизации, и строкой header=Cookie: session=... каждому URL приписывается нужная сессия. Это аккуратнее, чем глобальный --load-cookies, когда у разных задач в одном списке разные учётки.
Уведомление о завершении закрывается хуком: aria2 вызывает скрипт по --on-download-complete=/usr/local/bin/notify.sh с тремя аргументами - gid, число файлов и путь. Внутри notify.sh две строки на curl отправляют сообщение в ваш мессенджер или командный чат, и вам не нужно проверять сервер, чтобы узнать, что восьмигигабайтный образ уже лежит на месте. Совместно с save-session это превращает aria2 в самодостаточную систему закачек, которая переживает ребуты и отчитывается сама.
Пример простого RPC-вызова на случай автоматизации извне: curl -s http://127.0.0.1:6800/jsonrpc -H 'Content-Type: application/json' -d с JSON-объектом {"jsonrpc":"2.0","id":"1","method":"aria2.addUri","params":["token:секрет",["https://mirror/example.iso"],{"dir":"/srv/downloads"}]} - и задача в очереди. Аналогичным образом aria2.tellActive и aria2.tellWaiting дают состояние очереди для мониторинга: по ним легко строится простая панель или alert, если очередь застряла на сутках.
Когда aria2 проигрывает альтернативам
Честная оценка дополняет картину. Для одиночного файла на быстром зеркале wget работает не хуже и не требует думать о соединениях. Для глубокой работы с торрентами - раздача годами, тонкие ratio-правила, RSS-автозагрузка - классические клиенты вроде qBittorrent с веб-интерфейсом удобнее и функциональнее. Для менеджмента загрузок в GUI на десктопе есть свои инструменты. Сильное место aria2 - именно скриптуемый конвейер: быстрые многопоточные закачки, гибрид HTTP+torrent, управление через RPC и предсказуемость в headless-среде. Там, где живут эти условия, у aria2 до сих пор нет равных по соотношению простоты и результата.
Практическое наблюдение напоследок: держите конфиг aria2 под версионным контролем вместе с остальной конфигурацией сервера, а секрет RPC меняйте вместе с прочими паролями при любой ротации доступа. Инструмент простой, и именно поэтому его легко забыть в аудите; а RPC-порт, открытый с слабым секретом, это неожиданный способ превратить ваш сервер в чужой download-box. Пять минут внимания при вводе закрывают этот риск навсегда.
И единая точка старта для новичка: начните с одного сервера, RPC на localhost и пары cron-задач, а когда очередь станет привычной частью инфраструктуры, тогда добавляйте веб-панель и распределение по площадкам - простота входа у aria2 обманчива лишь в лучшую сторону.