aria2是一个基于命令行的开源下载工具,支持多协议、多来源(HTTP/HTTPS、FTP、BT种子、磁力链接、Metalink协议等)、多线程的下载。
本篇介绍Centos7下
- aria2的安装、配置
- aria2设为系统服务,自启动
- 自动更新
bt-tracker
- 搭配前端
UI
AriaNG
离线下载
两种方式 yum
安装以及源码安装
#安装epel源
yum -y install epel-release
yum -y install aria2
#查看aria2版本
aria2c -v
yum install gcc*
wget https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1.tar.gz
tar -zxvf aria2-1.33.1.tar.gz
mv aria2-1.33.1 aria2
cd aria2
./configure
make
make install
通过配置文件
#目录设计/root/.aria2/aria2.conf
mkdir ~/.aria2
#创建session文件
touch ~/.aria2/aria2.session
#创建配置文件
vi ~/.aria2/aria2.conf
粘贴修改如下字段,注意 RPC端口
RPC授权令牌
# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/root/downloads
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# 预分配所需时间: none < falloc ? trunc < prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=20
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
## 进度保存相关 ##
# 从会话文件中读取下载任务
input-file=/root/.aria2/aria2.session
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
save-session=/root/.aria2/aria2.session
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=pan.test.com
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-passwd=
## BT/PT下载相关 ##
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
follow-torrent=true
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
listen-port=6881-6999
# 单个种子最大连接数, 默认:55
bt-max-peers=55
# 打开DHT功能, PT需要禁用, 默认:true
enable-dht=true
# 打开IPv6 DHT功能, PT需要禁用
enable-dht6=false
# DHT网络监听端口, 默认:6881-6999
#dht-listen-port=6881-6999
# 本地节点查找, PT需要禁用, 默认:false
#bt-enable-lpd=false
# 种子交换, PT需要禁用, 默认:true
enable-peer-exchange=true
# 每个种子限速, 对少种的PT很有用, 默认:50K
#bt-request-peer-speed-limit=50K
# 客户端伪装, PT需要
peer-id-prefix=-TR2770-
user-agent=Transmission/2.77
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
seed-ratio=0.1
# 强制保存会话, 即使任务已经完成, 默认:false
# 较新的版本开启后会在任务完成后依然保留.aria2文件
#force-save=false
# BT校验相关, 默认:true
#bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=true
# 保存磁力链接元数据为种子文件(.torrent文件), 默认:false
bt-save-metadata=true
两种模式:作为命令直接调用,RPC Server
模式(推荐)
常用命令
#直接下载
$ aria2c http://example.org/mylinux.iso
#从两个地址下载:
$ aria2c http://a/f.iso ftp://b/f.iso
#双线程下载
$ aria2c -x2 http://a/f.iso
#用种子下载
$ aria2c http://example.org/mylinux.torrent
#磁力链接
$ aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'
#Metalink
$ aria2c http://example.org/mylinux.metalink
#下载文本中所有链接
$ aria2c -i uris.txt
启动RPC Server
模式
#-D参数指Daemon模式,后台执行
aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -c --dir /root/download -D
加载配置文件启动(推荐)
aria2c --conf-path=/root/.aria2/aria2.conf -D
vi /etc/init.d/aria2c
内容如下,
需要注意的就是路径,此例为yum
安装,路径为/usr/bin/aria2c
#!/bin/sh
### BEGIN INIT INFO
# Provides: aria2
# Required-Start: $remote_fs $network
# Required-Stop: $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO
case "$1" in
start)
echo -n "Starting aria2c"
/usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
;;
stop)
echo -n "Shutting down aria2c "
killall aria2c
;;
restart)
killall aria2c
/usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
;;
esac
exit
可执行权限
chmod 7777 /etc/init.d/aria2c
控制命令
#重新加载一下
systemctl daemon-reload
#启动
systemctl start aria2c
#停止
systemctl stop aria2c
#重启
#systemctl restart aria2c
#开启自启动
systemctl enable aria2c
如果你嫌BT监听端口开的太多,可以更改配置文件aria2.conf
改为51413
firewall-cmd --zone=public --add-port=6800/tcp --permanent
firewall-cmd --zone=public --add-port=6881-6999/tcp --permanent
firewall-cmd --zone=public --add-port=6881-6999/udp --permanent
firewall-cmd --reload
实际使用中aria2对种子,磁力链接的下载速度非常令人不满意,经常0 Kb/s需要手动添加tracker
才会有速度,但手动添加太麻烦。
- https://github.com/ngosang/trackerslist提供了一份
tracker
自动更新列表 - Aria2 bt-tracker跟踪服务器列表自动更新 – Zephyr - 自由的风提供了
bt-tracker
更新脚本。
这样问题便解决了。
#编辑aria2的配置文件
vi ~/.aria2/aria2.conf
#在末尾添加字段,tracker之间用,隔开
bt-tracker=udp://9.rarbg.com:2710/announce,udp://tracker.skyts.net:6969/announce
创建bt-tracker
更新脚本
vi /root/trackers-list-aria2.sh
填写如下字段
#!/bin/bash
killall aria2c
list=`wget -qO- https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`
if [ -z "`grep "bt-tracker" /root/.aria2/aria2.conf`" ]; then
sed -i '$a bt-tracker='${list} /root/.aria2/aria2.conf
echo add......
else
sed -i "s@bt-tracker.*@bt-tracker=$list@g" /root/.aria2/aria2.conf
echo update......
fi
可执行权限
chmod +x /root/trackers-list-aria2.sh
执行脚本
/root/trackers-list-aria2.sh
更新过程会先关闭aria2c进程,更新完成再需要手动开启aria2c
systemctl start aria2c
当然也可以使用任务计划程序自动完成
使用crontab
任务计划程序 实现自动更新
crontab -e
添加如下字段
*/30 * * * * /root/trackers-list-aria2.sh
*/5 * * * * /usr/bin/aria2c --conf-path=/root/.aria2/aria2.conf -D
字段解释
- 每30分钟更新一次tracker列表(实际不需要这么频繁 这个更新频率请自己掌握)
- 每5分钟启动一次aria2,防止aria2崩
aria2不带GUI界面,搭配前端UI工具更方便一些。
AriaNg是一个前端(HTML+JS静态)控制面板,不需要和 aria2(后端/服务端)放在一个服务器或者设备中,你可以直接下载到你的本地电脑上使用,或者放在服务器访问,服务器只要有Nginx或者Apache就可以。(类似的还有WebUI,这里不介绍了。)
- 下载最新版
aria-ng-0.3.0.zip
- 解压缩
- 打开
index.html
- 点击
AriaNg 设置
设置的内容就是上面修改的配置文件/root/.aria2/aria2.conf
Aria2 RPC Alias #RPC别名随便起一个
Aria2 RPC Address #服务器的ip及端口
Aria2 RPC Protocol #协议 默认Http
Request Method #请求方法 默认POST
Secret Token #密钥 上面设置的pan.test.com
填写完毕,别忘了点击Reload Page
,重加载完后状态变为Conncted
配置完毕,现在添加下载任务进行下载了。
- 下载最新版
aria-ng-0.3.0.zip
- 上传至网站根目录
- 解压缩
- 访问网站
设置的内容同本地使用(汗,本地用是英文界面,放在服务器是中文)