aria2 Complete Documentation
aria2 文档:安装、配置与自动化
aria2 是一款免费、开源的多协议命令行下载工具,采用 C++ 编写,支持 HTTP、HTTPS、FTP、SFTP、BitTorrent 和 Metalink。它可同时建立多达 16 个并行连接,在限制单连接速度的服务器上通常比 wget 或 curl 快数倍,而内存占用仅为 4–9 MiB。适用于 Windows、macOS、Linux 和 Android,无需图形界面。
通过本文档,您可以掌握在 Windows、Linux 和 macOS 上的安装方法,配置高级协议引擎,并将 aria2 集成到自己的自动化流程中。
交叉编译:aria2 提供了 mingw-config 和 android-config 封装脚本,可分别借助 MinGW 和 NDK 工具链生成 Windows(.exe)和 Android 二进制文件。
HTTP 与 FTP 基础配置
aria2 开箱即用即可出色地处理常规 HTTP/FTP 下载,但其真正的强大之处在于 协议混合。它可以同时通过 HTTP/FTP/SFTP 和 BitTorrent 下载同一文件,并将来自直连源的数据上传至 BitTorrent 群组,从而最大化下载效率。
注意:aria2 纯粹是一个命令行程序和 RPC 后端。如果您使用
-x 16 开启 16 个连接,某些服务器可能会暂时限制您的 IP。请务必合理设置并发数。
批量自动下载
对于网页抓取、镜像同步和批量操作,您可以将包含数千个 URL 的纯文本文件直接交给 aria2。它会使用 -i(输入文件)参数并行高速下载这些链接。
BitTorrent 深入解析
aria2 核心引擎直接集成了功能完备的 BitTorrent 客户端能力,原生支持 DHT 路由表、本地节点发现(LPD)和磁力链接解析。
注意:aria2 是为数不多的原生支持 BitTorrent WebSeeding 的客户端之一。您可以将标准 HTTP 镜像源同时接入 P2P 群组!
Metalink 支持
Metalink 是一种包含 URL 列表、校验和与元数据的 XML 文件。aria2 可利用它自动寻找最快的镜像源,同时校验文件的完整性。
断点续传与恢复
与 wget 不同,aria2 具备非常强大的文件恢复能力。即使在大文件传输过程中断网或断电,也可以使用
-c / --continue 参数无缝恢复下载并校验数据。
如果不使用 -c 且文件已存在,aria2 默认会自动将新下载重命名为 mylinux.1.iso,以防止意外覆盖。
带宽限速
在后台下载时,可通过设置严格的限速来避免 aria2 占满家庭网络。限速既可全局应用于整个守护进程,也可针对单个任务单独设置。
磁盘预分配与高速 I/O
当通过 16 个并行分片连接下载 50GB 以上的大文件时,机械硬盘(以及普通 SSD)会出现严重的文件系统碎片,从而导致速度下降。
aria2 的 falloc 引擎可在下载开始前,直接在内核层面命令操作系统预先分配好数据块。
校验和与完整性校验
可强制 aria2 在传输过程中或完成后校验哈希值,确保下载的文件未被损坏或篡改。
高级网络与 IPv6
可精细调整 aria2 绑定本地网卡的方式,特别适用于多网卡服务器或 VPN 环境。
代理配置
aria2 支持 HTTP 代理(HTTPS 通过 CONNECT 隧道),可跳过 SSL 证书校验,并支持显式绑定 IPv6。aria2 不支持 SOCKS 代理——如只有 SOCKS5 隧道,请使用 privoxy 或 gost 等 HTTP 转 SOCKS 桥接工具。
安全与加密
对于 BitTorrent 传输,您可以强制加密以防止运营商窥探或限速。还可以为 HTTPS 链接设置严格的 SSL 证书校验要求。
守护进程服务
将 aria2 完全脱离终端运行于后台。这是搭建 VPS、Seedbox 和无头服务器环境的必备方式。
提示:如果您希望以交互方式管理后台下载,而不想运行守护进程服务,可以将 aria2c 运行在独立的 tmux 会话中。
RPC 子系统(远程控制)
通过 JSON-RPC 接口,您可以从远程服务器、手机 App 或 AriaNg 等 Web 图形界面向 aria2 发送控制命令。
| 方法 | 描述 |
|---|---|
aria2.addUri |
添加新的 HTTP/FTP/SFTP 下载任务。 |
aria2.addTorrent |
通过上传 .torrent 文件添加 BitTorrent 下载任务。 |
aria2.tellStatus |
返回指定 GID 的进度与状态。 |
aria2.pauseAll |
立即暂停所有进行中的下载。 |
aria2.getOption |
获取指定 GID 的配置参数。 |
事件钩子与脚本
利用 aria2 内建的事件监听器触发自动化任务。您可以将文件路径、GID 等变量传递到外部 bash 环境中。
完美的 aria2.conf 配置
在静态配置文件(通常为
~/.aria2/aria2.conf)中定义固定的引擎参数,从而省去每次手动指定参数。
环境变量
aria2 会自动读取终端配置文件中的标准系统代理变量。
| 变量 | 描述 |
|---|---|
http_proxy |
HTTP 请求的默认代理。 |
https_proxy |
HTTPS 请求的默认代理。 |
all_proxy |
全局代理服务器。 |
no_proxy |
不走代理直连的域名。 |
理解控制台进度显示
控制台引擎实时输出的状态快照字符串。
[#GID 123MB/456MB(27%) CN:16 DL:5.2MB UL:12KB ETA:1m45s]
- GID: 任务唯一标识符。
- CN: 当前连接数。
- DL / UL: 当前下载 / 上传速度。
- ETA: 预计剩余时间。
技术文件与格式
底层使用的二进制布局与状态文件。
| 文件 | 用途 |
|---|---|
dht.dat |
存储 DHT 路由表(二进制)。 |
.netrc |
HTTP/FTP 自动登录凭据。 |
aria2.session |
暂停 / 恢复的会话状态。 |
*.aria2 |
v1 版二进制控制文件(大端序)。 |
machine example.com login user password password
退出状态码
在脚本中解析 $?,以优雅地处理失败情况。
| 代码 | 含义 |
|---|---|
| 0 | 成功 |
| 1 | 未知错误 |
| 3 | 404 未找到 |
| 9 | 磁盘已满 |
高阶技巧与单位
K/M:十进制(1000)
- Ki/Mi:二进制(1024)
无限制: 使用
- 或 0 表示无限制。
开发者集成(libaria2)
现代 C++11 库接口。