aria2
来自项目主页
- aria2 是一个轻量级的多协议和多来源命令行下载实用程序。它支持 HTTP/HTTPS, FTP, BitTorrent 和 Metalink。aria2 可以通过内置的 JSON-RPC 和 XML-RPC 接口进行操作。
安装
要将 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
: 在下载开始之前不预先分配磁盘空间。(默认值:prealloc) 1input-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 支持)、btrfs 或 XFS,因为它几乎可以立即分配大型文件 (GB)。不要将 falloc 与旧版文件系统(例如 ext3)一起使用,因为预分配消耗的时间与标准分配大致相同,同时会阻止 aria2 进程继续下载。
aria2c --help=#all
和 aria2c(1) § 选项。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
选项中指定的值输出。
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-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-secret=secret
前端
aria2
自身的配置,并且不同的 UI 是否重用 aria2
配置(如果已创建自定义配置)尚不确定。用户应确保在其选定的工具中有效实施所需的参数,并持久存储这些参数(例如,uGet 有其自己的 aria2
命令行,该命令行在重启后仍然有效)。Web UI
--enable-rpc
启动 aria2c
才能工作。它们旨在在您的本地计算机上运行,而不是在远程服务器上使用 aria 下载- Webui — aria2 的 Html 前端。
- aria2rpc — 用于连接到
aria2c
远程实例的命令行工具。如果安装了aria2c
,则可以在/usr/share/doc/aria2/xmlrpc/aria2rpc
下找到它。
- AriaNg — aria2 的纯 HTML 前端。(还有一个桌面客户端)
其他 UI
--enable-rpc
启动 aria2c
即可运行。- aria2fe — 基于 CLI 的 aria2 下载实用程序的 GUI。
- Persepolis — 具有许多功能的 aria2 下载管理器的图形前端。支持 HTTP 和 FTP。
- uGet — 功能丰富的 GTK/CLI 下载管理器,可以通过启用内置插件将 aria2 用作后端。
- Motrix — 功能齐全的下载管理器,支持基于 aria2 下载 HTTP、FTP、BitTorrent、Magnet
技巧与窍门
下载软件包但不安装
只需使用以下命令
# pacman -Sp packages | aria2c -i -
pacman -Sp
列出 stdout 上软件包的 URL,而不是下载它们,然后 |
将其管道传输到下一个命令。最后,aria2c 中 aria2c -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
将永远做种文件。
参见
- aria2 手册 - 官方网站
- aria2 用法示例 - 官方网站