aria2 (简体中文)
来自 aria2 主页:
- aria2 是一个轻量级多协议多源命令行下载工具,支持 HTTP/HTTPS, FTP,BitTorrent 和 Metalink。用户可以通过内置的 JSON-RPC 和 XML-RPC 接口操作 aria2。
安装
要以守护进程运行 aria2,你可以写一个 systemd 用户单元。
配置
aria2.conf
aria2 默认从 $XDG_CONFIG_HOME/aria2/aria2.conf
中寻找全局配置,该行为可以通过 --conf-path
选项改变:
- 下面的示例用配置文件
/file/aria2.rapidshare
中的选项下载aria2.example.rar
:
$ aria2c --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar
如果存在 $XDG_CONFIG_HOME/aria2/aria2.conf
,但希望使用 /file/aria2.rapidshare
中的选项,需要在命令中加入 --no-conf
选项:
- 若不使用默认的配置文件,只使用
/file/aria2.rapidshare
中的选项下载aria2.example.rar
:
$ aria2c --no-conf --conf-path=/file/aria2.rapidshare http://rapidshare.com/files/12345678/aria2.example.rar
如果不存在 $XDG_CONFIG_HOME/aria2/aria2.conf
,并且你想要简化配置管理:
$ touch $XDG_CONFIG_HOME/aria2/aria2.conf
示例 aria2.conf
continue dir=${HOME}/Desktop file-allocation=none input-file=${HOME}/.aria2/input.conf log-level=warn max-connection-per-server=4 min-split-size=5M on-download-complete=exit
这与执行下面的命令等价:
$ aria2c --dir=${HOME}/Desktop --file-allocation=none --input-file=${HOME}/.aria2/input.conf --on-download-complete=exit --log-level=warn FILE
选项细节
-
continue
: 如果存在下载任务对应的控制文件,自动继续未完成的下载任务。 -
dir=${HOME}/Desktop
: 在~/Desktop
中存储下载文件。 -
file-allocation=none
: 不要在下载开始前预分配磁盘空间(默认值:prealloc1 -
input-file=${HOME}/.aria2/input.conf
: 从~/.aria2/input.conf
中的 URI 下载文件,URI 以 TAB 分割。 -
log-level=warn
: 设置日志级别,只输出警告和错误。(默认值:debug) -
max-connection-per-server=4
: 设置每个服务器的最大链接数为 4。(默认值:1) -
min-split-size=5M
: 只在文件大小超过 2*5MB = 10MB 时分割文件。(默认值: 20M) -
on-download-complete=exit
: 当下载任务完成时,运行exit
命令并退出 shell。
示例输入文件 #1
从两个分别的地址下载 aria2-1.10.0.tar.bz2
到 ~/Desktop
,并合并为 aria2-1.10.0.tar.bz2
http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2 http://sourceforge.net/projects/aria2/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2
示例输入文件 #2
下载 aria2-1.9.5.tar.bz2
,命名为 aria2.old.tar.bz2
,保存到 /file/old
http://aria2.net/files/stable/aria2-1.9.5/aria2-1.9.5.tar.bz2 dir=/file/old out=aria2.old.tar.bz2
下载 aria2-1.10.0.tar.bz2
,命名为 aria2.new.tar.bz2
,保存到 ~/Desktop
http://aria2.net/files/stable/aria2-1.10.0/aria2-1.10.0.tar.bz2 out=aria2.new.tar.bz2
备注
1 --file-allocation=falloc
: 推荐在新的文件系统,比如 ext4 (具有 extents 支持的)、btrfs 或者 xfs 上,使用这个选项,因为它们几乎可以瞬间分配 GB 级别的大文件。不要在传统的文件系统,比如 ext3 上,使用 falloc,因为预分配会消耗与正常分配相同的时间,还会阻塞 aria2 下载。
aria2c --help=#all
和 aria2c(1) § OPTIONS。http-user=USER_NAME http-passwd=PASSWORD allow-overwrite=true dir=/file/Downloads file-allocation=falloc enable-http-pipelining=true input-file=/file/input.rapidshare log-level=error max-connection-per-server=2 summary-interval=120
选项细节
-
http-user=USER_NAME
: 设置 HTTP 用户名为 USER_NAME。这会影响所有的 URI。 -
http-passwd=PASSWORD
: 设置 HTTP 密码为 PASSWORD。这会影响所有的 URI。 -
allow-overwrite=true
: 如果控制文件不存在,重新下载。(默认值:false) -
dir=/file/Downloads
: 存储下载文件到/file/Downloads
。 -
file-allocation=falloc
: 在下载开始前,调用 posix_fallocate(3) 分配磁盘空间。(默认值:prealloc) -
enable-http-pipelining=true
: 启用 HTTP/1.1 流水线来降低网络延迟的影响,并减少数据用量。(默认值:false) -
input-file=/file/input.rapidshare
: 从/file/input.rapidshare
中的 URI 下载文件,URI 以 TAB 分割。 -
log-level=error
: 设置日志级别,只输出错误。(默认值:debug) -
max-connection-per-server=2
: 设置每台服务器每个文件的最大链接数为 2。(默认值:1) -
summary-interval=120
: 每 120 秒输出下载进度汇总。(默认值:60)2
备注
- 因为
aria2.rapidshare
包含用户名和密码,建议将该文件权限设置为 600 或类似的权限。
$ cd /file $ chmod 600 /file/aria2.rapidshare $ ls -l total 128M -rw------- 1 arch users 167 Aug 20 00:00 aria2.rapidshare
2 summary-interval=0
: 不显示下载进度汇总,可以提高总体性能。日志仍然会按照 log-level
选项的配置输出。
示例 aria2.bittorrent
bt-seed-unverified max-overall-upload-limit=1M max-upload-limit=128K seed-ratio=5.0 seed-time=240
选项细节
-
bt-seed-unverified=false
: 在做种前不检查文件哈希。(默认值:true) -
max-overall-upload-limit=1M
: 设置全局最大上传速度为 1MB/sec。(默认值:0) -
max-upload-limit=128K
: 设置每个种子的最大上传速度为 128K/sec。(默认值:0) -
seed-ratio=5.0
: 下载完成后持续做种直到分享率达到 5.0。(默认值:1.0) -
seed-time=240
: 下载完成后做种 240 分钟。
seed-ratio
和 seed-time
,当至少一个条件满足时就会停止做种。示例 aria2.daemon
这个配置可以用于以服务启动的 aria2。可以与下面的前端一起使用。注意 rpc-user 与 rpc-pass 选项已经被弃用,但许多前端还不支持新的认证系统。记得修改用户名、密码和下载目录。
continue daemon=true dir=/home/aria2/Downloads file-allocation=falloc log-level=warn max-connection-per-server=4 max-concurrent-downloads=3 max-overall-download-limit=0 min-split-size=5M enable-http-pipelining=true enable-rpc=true rpc-listen-all=true rpc-user=rpcuser rpc-passwd=rpcpass
前端
aria2
本身的配置,不确定不同的前端是否会在提供了自定义配置时,复用 aria2
的配置。用户应当确认选择的工具能效实现,并能持久保存配置。(比如 uGet 提供了自己的 aria2
命令行,并且会在重启间保存配置)。Web UIs
aria2c
以 --enable-rpc
选项启动。它们应该在你本地的设备,而不是远程服务器上运行。- Webui — Aria2 的 Html 前端。
-
aria2rpc — 用于连接远程
aria2c
实例的命令行工具。如果安装了aria2c
,该程序可以在/usr/share/doc/aria2/xmlrpc/aria2rpc
下找到。
其他 UIs
aria2c
以 --enable-rpc
选项启动。- aria2fe — 一个命令行下载工具 aria2 的 GUI。
- Persepolis — Aria2 下载管理器的图形前端,具有许多功能,支持 HTTP 和 FTP。
- uGet — 功能丰富的 GTK/CLI 下载管理器,可以通过内置的插件,使用 aria2 作为后端。
提示与技巧
下载但不安装软件包
只需要用下面的命令:
# pacman -Sp packages | aria2c -i -
pacman -Sp
在标准输出里打印软件包的 URL,而不是下载它们,然后用 |
管道传给下一个命令。最后,aria2c -i -
里的 -i
意味着下载文件的 URL 应该从文件里指定。但如果传入了 -
,就从 stdin 里读取 URL。
pacman XferCommand
参见 pacman (简体中文)/Tips and tricks (简体中文)#使用aria2.
改变 User Agent
一些站点会根据你的 User Agent 过滤请求,由于 aria2 并不出名,使用主流下载器或浏览器的 User Agent 可能会更好。只需要像这样使用 -U
选项:
$ aria2c -UWget http://some-url-to-download/file.xyz
你可以任意指定 User Agent,比如 -UMozilla/5.0 等。
在 makepkg 中使用 aria2
你可以使用 aria2 代替 curl 来下载源文件,只需要像下面一样更改 DLAGENTS
变量:
/etc/makepkg.conf
[...] DLAGENTS=('ftp::/usr/bin/aria2c -UWget -s4 %u -o %o' 'http::/usr/bin/aria2c -UWget -s4 %u -o %o' 'https::/usr/bin/aria2c -UWget -s4 %u -o %o' 'rsync::/usr/bin/rsync --no-motd -z %u %o' 'scp::/usr/bin/scp -C %u %o') [...]
-UWget
选项改变 user agent 为 Wget,可以防止下载文件时,站点根据不同的 user agent 提供不同的响应。由于 aria2 不是著名的下载器,可能会被站点识别为浏览器而不是下载器,所以使用 Wget 的 user agent 可以在大多数情况下解决问题。作为守护进程使用 aria2
要使用 aria2 作为守护进程,你可以 写一个systemd用户单元。比如:
~/.config/systemd/user/aria2cd.service
[Unit] Description=aria2 Daemon [Service] Type=simple ExecStart=/usr/bin/aria2c --conf-path=/path/to/conf [Install] WantedBy=default.target
#示例 aria2.daemon 展示了配置文件示例。
使用 aria2 做种
要做种下载好的种子,使用 --check-integrity
选项:
$ aria2c --check-integrity=true --seed-ratio=0.0 --dir="/path/to/iso" "/path/to/torrent/archlinux-2020.03.01-x86_64.iso.torrent"
指定 --seed-ratio=0.0
选项可以永久做种。