aria2 是一个强大的下载工具,单是它的GUI程序github上就有一堆,足见其之厉害。不过我今天主要想介绍一下aria2的命令行的一些基本使用。

安装

命令行的安装是比较简单的,直接使用对应的包管理器安装就好,比如apt homebrew等,windows也可以在github上面找到对应的文件下载。

基本下载

首先,aria2的命令是aria2c,其基本使用和wget类似,后面跟一个链接就可以直接下载了,比如aria2c https://github.com/aria2/aria2/releases/download/release-1.36.0/aria2-1.36.0-win-64bit-build1.zip就会直接下载windows的zip包到当前文件夹。这个链接不仅仅可以是http,也可以是ftp、magnet磁力链接等。

有时候可能会想指定文件夹和修改文件名,其对应的参数为:

  • -d指定文件夹,比如aria2c -d ./target https://thefile会下载文件到所在文件夹的target目录
  • -o指定文件名,比如aria2c -o afile https://thefile,可以-d参数一起使用
  • --allow-overwrite=true同名文件覆盖,aria2的默认行为是忽略同名,此选项则表示允许覆盖

一般我常用的就这几个,其他的可以通过man aria2c随用随查,因为参数实在是太多了。

启动RPC服务

如果只是上面的需求,wget也能满足(虽然我wget用的也不熟),aria2更强大的地方就在于可以启动一个RPC服务器,以供远程调用,比如说,自己家里的下载服务器上可以启动这样一个服务,有些大文件下载就可以直接丢过去。下面分别介绍下在Linux和Windows上启动和管理RPC服务器。

aria2.conf

aria2这么强大,配置这么多,没有配置文件怎么行。一般情况下会在家目录下($HOME)建立一个aria2文件夹,然后进入文件夹,新建一个aria2.conf文件,当然其他路径也是没问题的。我主要用的配置是这些:

1
2
3
4
5
6
7
8
9
dir=/root/downloads # 下载目录(这里用的是Linux的文件格式,Windows要改一下,类似 dir=C:\path\to\your\download\folder)
log=/root/aria2/aria2.log # 日志文件路径 最好都使用绝对路径
log-level=notice # 日志等级,具体可选值查手册
max-connection-per-server=4 # 每次下载到下载文件服务器的最大连接数
enable-rpc=true # 启用rpc
rpc-listen-all=true # 监听所有来源(这里每个人需求不一致,我个人在家庭网络我会选择设置true,云服务器则设置false。具体看个人需求)
rpc-allow-origin-all=true # 同上
rpc-listen-port=6801 # 修改监听端口
rpc-secret=changeapassword # 设置密钥。根据个人需要考虑复杂程度或者不设密码

纯净版:

1
2
3
4
5
6
7
8
9
dir=/root/downloads
log=/root/aria2/aria2.log
log-level=notice
max-connection-per-server=4
enable-rpc=true
rpc-listen-all=true
rpc-allow-origin-all=true
rpc-listen-port=6801
rpc-secret=changeapassword

Linux运行

这里我使用systemd来配置后台运行,并且设置开机自启动。

随便一个文本编辑器,比如我用vim:vim /lib/systemd/system/aria2.service ,然后输入下面的内容

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Unit]
Description=Aria2 RPC Daemon Service
After=network.target

[Service]
Type=simple
User=root
Group=root
ExecStart=/usr/bin/aria2c --conf-path=/root/aria2/aria2.conf
Restart=on-failure
RestartSec=15s
WorkingDirectory=/root/aria2

[Install]
WantedBy=multi-user.target

然后输入:wq,保存并退出。

接下来输入systemctl daemon-reload 重新加载配置,systemctl enable aria2设置开机启动, systemctl start aria2启动aria2的rpc服务,systemctl status aria2查看服务状态。

至此,Linux下的aria2就设置好了,我并没有针对bt下载等进行额外设置,主要原因是我bt喜欢用qbittorrent一些,如果有需要可以自行查找其他的相关教程。

Windows运行

由于我家里的下载机是一台Windows,所以我个人实际上是需要在Windows上面来启动rpc服务的,假设你已经下载好exe文件了。

下面是我的方法:

  1. aria2.conf文件修改下路径格式,找个目录粘贴进去
  2. 打开任务计划程序(按下 Windows 键,然后搜索 “任务计划程序” 并打开)。
  3. 在右侧的操作面板中,选择 “创建任务”。
  4. 在 “常规” 选项卡中,为任务输入一个名称,例如 “Aria2”。
  5. 选择 “不管用户是否登录都要运行”。
  6. 选择 “以最高权限运行”。
  7. 转到 “触发器” 选项卡,点击 “新建”,选择 “开始任务” 下拉列表中的 “登录”,然后点击 “确定”。
  8. 转到 “操作” 选项卡,点击 “新建”。
  9. 在 “程序或脚本” 输入框中,浏览选中aria2c.exe,或者输入 aria2c.exe 的完整路径。
  10. 在 “参数” 输入框中,输入 --conf-path=C:\aria2\aria2.conf。(输入你的配置文件路径)
  11. 点击 “确定” 保存操作设置。
  12. 点击 “确定” 保存并创建任务。

现在Windows的aria2服务也设置好了,回到任务计划程序主面板,找到新创建的Aria2,运行它,现在就大功告成了。

使用RPC服务

现在我们就来使用aria2。回到我的mac上来,打开命令行,输入

1
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": "1", "method": "aria2.tellActive", "params": ["token:yourpassword"]}' http://<youraddress>:<yourport>/jsonrpc

这个是用来获取当前的活跃任务的,我们用它来验证一下服务运行是不是正常,如果正常的话会直接输出

1
{ "id": "1", "jsonrpc": "2.0", "result": [] }

如果回车之后半天没反应,那么大概率是防火墙的问题。你可以在部署服务的机器上运行上面的命令试一下,确认具体问题。

确认可以成功可以调通之后我们就找个大文件试一下,

1
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": "1", "method": "aria2.addUri", "params": ["token:yourpassword", ["your_link"]]}' http://<youraddress>:<yourport>/jsonrpc

这里正常情况下应该返回一个类似这样的结果:

1
{ "id": "1", "jsonrpc": "2.0", "result": "thisisagid" }

然后再调用前面的查看活跃任务的命令,就可以看到当前正在运行的下载了。如果你想格式化json输出,可以搭配jq来使用。当然更方便一些肯定就要用GUI工具了,这个我们后面再看。

总结

Aria2肯定还有很多的用法和各种设置,不过今天就先折腾到这里,现在已经可以搭配诸如Alist的支持aria2的服务来进行尽情下载了。