跳转至内容

aria2

来自 ArchWiki

来自项目 主页

aria2 是一个轻量级的多协议、多源命令行下载工具。它支持 HTTP/HTTPS, FTP, BitTorrentMetalink。可以通过内置的 JSON-RPCXML-RPC 接口对 aria2 进行操作。

安装

安装 aria2 软件包。

若要将 aria2 作为 守护进程 使用,您可以编写一个 systemd 用户单元 (user unit)

配置

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)。请勿在 ext3 等传统文件系统上使用 falloc,因为 prealloc 消耗的时间与标准分配大致相同,且会锁定 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 流水线 (pipelining) 以克服网络延迟并降低网络负载。(默认值: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: 将每个种子最大上传速度设置为 128K/秒。(默认值: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-secret=secret

前端

注意 在前端界面中实现的设置不会影响 aria2 自身的配置,且不确定不同的 UI 在自定义配置时是否会复用 aria2 配置。用户应确保所需参数在选定工具中得到了有效实现且持久化存储(例如 uGet 拥有自己的 aria2 命令行,可以在重启后保持)。

Web UI

注意 这些前端需要 aria2c 在启动时带有 --enable-rpc 参数才能工作。它们旨在运行在您的本地计算机上,而不是运行在使用 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 — 纯 HTML 的 aria2 前端。(同时提供桌面客户端)
https://github.com/mayswind/AriaNg || ariang-gitAUR, ariang-native-electron-gitAUR

其他 UI

注意 这些前端不需要 aria2c 在启动时带有 --enable-rpc 即可运行。
  • aria2fe — 一个为命令行 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 将软件包的 URL 输出到标准输出(stdout)而不是下载它们,然后通过 | 管道传递给下一个命令。最后,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

您可以使用任何您想要的字符串,例如 -UMozilla/5.0 等。

在 makepkg 中使用 aria2

您可以使用 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。这可以防止在从那些会根据用户代理过滤请求并提供不同响应的网站下载时出现问题。由于 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

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

使用 aria2 做种

要为已经下载完成的种子做种,请使用 --check-integrity 选项

$ aria2c --check-integrity=true --seed-ratio=0.0 --dir="/path/to/iso" "/path/to/torrent"

指定 --seed-ratio=0.0 将永久为该文件做种。

将 aria2 与 torsocks 配合使用

aria2 可以与 torsocks 配合使用,以通过 Tor 进行下载;请记住这仅限于基于 TCP 的协议,因此种子下载将无法工作。

默认情况下,aria2 会尝试使用其自带的 DNS 解析器实现,但这在 torsocks 下无法工作。可以通过传递 --async-dns=false 选项来解决此问题

$ torsocks aria2c --async-dns=false 'https://fastly.mirror.pkgbuild.com/iso/latest/archlinux-x86_64.iso'

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.