aria2

来自 ArchWiki

来自项目主页

aria2 是一个轻量级的多协议和多来源命令行下载实用程序。它支持 HTTP/HTTPS, FTP, BitTorrentMetalink。aria2 可以通过内置的 JSON-RPCXML-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
注意: 上面的 aria2.conf 示例可能错误地使用了 $HOME 变量。一些用户报告称,花括号语法明确地在 aria2 工作目录中创建了一个单独的 ${HOME} 子目录。这样的目录可能难以遍历,因为 bash 会将其视为 $HOME 环境变量。目前,建议在 aria2.conf 中使用绝对路径名。

选项详情

  • continue: 如果存在相应的控制文件,则继续下载部分下载的文件。
  • dir=${HOME}/Desktop: 将下载的文件存储在 ~/Desktop 中。
  • file-allocation=none: 在下载开始之前不预先分配磁盘空间。(默认值:prealloc) 1
  • input-file=${HOME}/.aria2/input.conf: 下载 ~/.aria2/input.conf 中找到的行或 TAB 分隔的 URI 列表
  • 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 并保存到 /file/old,文件名为 aria2.old.tar.bz2

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 并保存到 ~/Desktop,文件名为 aria2.new.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 支持)、btrfsXFS,因为它几乎可以立即分配大型文件 (GB)。不要将 falloc 与旧版文件系统(例如 ext3)一起使用,因为预分配消耗的时间与标准分配大致相同,同时会阻止 aria2 进程继续下载。

提示: 有关配置选项的完整列表,请参阅 aria2c --help=#allaria2c(1) § 选项

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 中找到的单行或 TAB 分隔的 URI 列表
  • 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 选项中指定的值输出。

提示: 示例配置文件也适用于 Hotfile, DepositFiles 等。
注意: 命令行选项始终优先于配置文件中列出的选项。

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/秒。(默认值:0)
  • max-upload-limit=128K: 将每个 torrent 的最大上传速度设置为 128K/秒。(默认值:0)
  • seed-ratio=5.0: 做种已完成的 torrent,直到共享率达到 5.0。(默认值:1.0)
  • seed-time=240: 为已完成的 torrent 做种 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-secret=secret

前端

注意: 在前端中实现的设置不会影响 aria2 自身的配置,并且不同的 UI 是否重用 aria2 配置(如果已创建自定义配置)尚不确定。用户应确保在其选定的工具中有效实施所需的参数,并持久存储这些参数(例如,uGet 有其自己的 aria2 命令行,该命令行在重启后仍然有效)。

Web UI

注意: 这些前端需要使用 --enable-rpc 启动 aria2c 才能工作。它们旨在在您的本地计算机上运行,而不是在远程服务器上使用 aria 下载
  • Webui — aria2 的 Html 前端。
https://github.com/ziahamza/webui-aria2 || webui-aria2-gitAUR
  • aria2rpc — 用于连接到 aria2c 远程实例的命令行工具。如果安装了 aria2c,则可以在 /usr/share/doc/aria2/xmlrpc/aria2rpc 下找到它。
https://github.com/tatsuhiro-t/aria2/blob/master/doc/xmlrpc/aria2rpc || aria2
  • AriaNg — aria2 的纯 HTML 前端。(还有一个桌面客户端)
https://github.com/mayswind/AriaNg || ariang-gitAUR, ariang-native-electron-gitAUR

其他 UI

注意: 这些前端不需要使用 --enable-rpc 启动 aria2c 即可运行。
  • aria2fe — 基于 CLI 的 aria2 下载实用程序的 GUI。
https://sourceforge.net/projects/aria2fe/ || aria2feAUR
  • Persepolis — 具有许多功能的 aria2 下载管理器的图形前端。支持 HTTP 和 FTP。
https://github.com/persepolisdm/ || persepolis
  • uGet — 功能丰富的 GTK/CLI 下载管理器,可以通过启用内置插件将 aria2 用作后端。
https://ugetdm.com || uget
  • Motrix — 功能齐全的下载管理器,支持基于 aria2 下载 HTTP、FTP、BitTorrent、Magnet
https://github.com/agalwood/Motrix || motrixAUR

技巧与窍门

下载软件包但不安装

只需使用以下命令

# pacman -Sp packages | aria2c -i -

pacman -Sp 列出 stdout 上软件包的 URL,而不是下载它们,然后 | 将其管道传输到下一个命令。最后,aria2caria2c -i - 开关中的 -i 表示要下载文件的 URL 应该从指定的文件中读取,但如果传递了 -,则从 stdin 读取 URL。

pacman XferCommand

请参阅 pacman/技巧与窍门#aria2

更改 User Agent

某些站点可能会根据您的 User Agent 过滤请求,由于 aria2 不是一个知名的下载器,因此最好使用一个更知名的下载器或浏览器作为 Aria 的 User Agent。只需使用 -U 选项,如下所示

$ aria2c -UWget http://some-url-to-download/file.xyz

您可以使用任何您想要的内容,例如 -UMozilla/5.0 等。

将 aria2 与 makepkg 结合使用

您可以使用 aria2 代替 curl 下载源文件,只需按如下方式更改 DLAGENTS 变量

/etc/makepkg.conf
[...]
DLAGENTS=('ftp::/usr/bin/aria2c -UWget -s4 -x4 %u -o %o --follow-metalink=mem'
          'http::/usr/bin/aria2c -UWget -s4 -x4 %u -o %o --follow-metalink=mem'
          'https::/usr/bin/aria2c -UWget -s4 -x4 %u -o %o --follow-metalink=mem'
          'rsync::/usr/bin/rsync --no-motd -z %u %o'
          'scp::/usr/bin/scp -C %u %o')
[...]
注意: 使用 -UWget 选项将用户代理更改为 Wget。这可以防止从根据用户代理过滤请求的站点下载时出现问题,以便根据用户访问 URL 的方式提供不同的响应。由于 aria2 是一个不太知名的下载器,因此站点可能会将其识别为浏览器而不是下载器,因此在大多数情况下,将用户代理更改为 Wget 可能会解决此问题。使用 --follow-metalink=mem 选项以避免将 metalink 作为单独的文件下载并导致源校验和过程失败。

将 aria2 用作守护进程

要将 aria2 用作守护进程,您应该编写 systemd 用户单元。例如

~/.config/systemd/user/aria2cd.service
[Unit]
Description=aria2 Daemon

[Service]
ExecStart=/usr/bin/aria2c --conf-path=/path/to/conf

[Install]
WantedBy=default.target

#aria2.daemon 示例 显示了一个示例配置文件。

使用 aria2 做种 torrent

要为已下载的 torrent 做种,请使用 --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 将永远做种文件。

参见