aria2 (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

翻译状态:本文是 Aria2翻译。上次翻译日期:2021-12-11。如果英文版本有所更改,则您可以帮助同步翻译。

来自 aria2 主页:

aria2 是一个轻量级多协议多源命令行下载工具,支持 HTTP/HTTPSFTPBitTorrentMetalink。用户可以通过内置的 JSON-RPCXML-RPC 接口操作 aria2。

安装

安装 aria2 软件包。

要以守护进程运行 aria2,你可以写一个 systemd 用户单元

注意: aria2 的可执行程序是 aria2c

配置

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
注意: 上面示例 aria.conf 可能错误地使用了 $HOME 变量,一些用户报告说,使用花括号语法会在 aria2 的工作目录下创建名叫 ${HOME} 的文件夹。因为 bash 会把 $HOME 当成环境变量,这样的文件夹很难访问。目前建议在 aria2.conf 中使用绝对路径。

选项细节

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。并且
  • 下载 aria2-1.10.0.tar.bz2,命名为 aria2.new.tar.bz2,保存到 ~/Desktop
http://aria2.net/files/stable/aria2-1.9.5/aria2-1.9.5.tar.bz2
  dir=/file/old
  out=aria2.old.tar.bz2
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=#allaria2c(1) § OPTIONS

示例 aria2.rapidshare

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)3

备注

  • 因为 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
3 summary-interval=0
不显示下载进度汇总,可以提高总体性能。日志仍然会按照 log-level 选项的配置输出。
提示: 示例的配置文件可以用于HotfileDepositFiles 等网站。
注意: 命令行选项永远优先于配置文件中的选项。

示例 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-ratioseed-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 选项启动。它们应该在你本地的设备,而不是远程服务器上运行。
  • YaaW — 又一个 Aria2 Web 前端,以纯 HTML/CSS/Javascript 实现。
https://github.com/binux/yaaw || yaaw-gitAUR
  • Webui — Aria2 的 Html 前端。
https://github.com/ziahamza/webui-aria2 || webui-aria2AUR
  • aria2rpc — 用于连接远程 aria2c 实例的命令行工具。如果安装了 aria2c,该程序可以在 /usr/share/doc/aria2/xmlrpc/aria2rpc 下找到。
https://github.com/tatsuhiro-t/aria2/blob/master/doc/xmlrpc/aria2rpc || aria2

其他 UIs

注意: 这些前端不需要 aria2c--enable-rpc 选项启动。
  • aria2fe — 一个命令行下载工具 aria2 的 GUI。
https://sourceforge.net/projects/aria2fe/ || aria2feAUR
  • Persepolis — Aria2 下载管理器的图形前端,具有许多功能,支持 HTTP 和 FTP。
https://github.com/persepolisdm/ || persepolis, persepolis-gitAUR
  • uGet — 功能丰富的 GTK/CLI 下载管理器,可以通过内置的插件,使用 aria2 作为后端。
https://ugetdm.com || uget

提示与技巧

下载但不安装软件包

只需要用下面的命令:

# 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=forking
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 选项可以永久做种。

另请参见