aria2
来自项目 主页
- aria2 是一个轻量级的多协议、多源命令行下载工具。它支持 HTTP/HTTPS, FTP, BitTorrent 和 Metalink。可以通过内置的 JSON-RPC 和 XML-RPC 接口对 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
选项详解
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)。请勿在 ext3 等传统文件系统上使用 falloc,因为 prealloc 消耗的时间与标准分配大致相同,且会锁定 aria2 进程导致无法继续下载。
aria2c --help=#all 和 aria2c(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 选项指定的值输出。
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-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
aria2c 在启动时带有 --enable-rpc 参数才能工作。它们旨在运行在您的本地计算机上,而不是运行在使用 aria 下载的远程服务器上- Webui — aria2 的 Html 前端。
- aria2rpc — 用于连接到远程
aria2c实例的命令行工具。如果安装了aria2c,可以在/usr/share/doc/aria2/xmlrpc/aria2rpc下找到它。
- AriaNg — 纯 HTML 的 aria2 前端。(同时提供桌面客户端)
其他 UI
aria2c 在启动时带有 --enable-rpc 即可运行。- aria2fe — 一个为命令行 aria2 下载工具提供的 GUI。
- Persepolis — aria2 下载管理器的图形前端,功能丰富。支持 HTTP 和 FTP。
- uGet — 功能丰富的 GTK/CLI 下载管理器,可以通过启用内置插件使用 aria2 作为后端。
- Motrix — 基于 aria2 的全功能下载管理器,支持下载 HTTP, FTP, BitTorrent 和 Magnet 链接
技巧与提示
下载软件包而不安装
只需使用以下命令
# 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'
参见
- aria2 手册 - 官方网站
- aria2 使用示例 - 官方网站