大家新年快乐!距离上一次更新文章已是半年。Aria2这个小伙伴自从上年的春节就呆在我的树莓派里了,使用了一年给我的体验还是蛮好的;总结网上的一些文章,以我自己使用了一年的过程遇到的一些问题都归纳在这一篇文章里分享出来。

获取Aria2并安装

由于Aria2本身非常小巧不依赖什么环境,一般在 官方库发布页 里直接下载设好权限就可以了,具操作如下:

  1. 下载名为 aria2-x.xx.x-android-arm-build1.zip 的发布包 (x.xx.x以具体发布版本号为准)
  2. 解压包得到 aria2c 文件
  3. 将文件上传到 /usr/bin 并给予执行权限 chmod 755 /usr/bin/aria2c

验证执行 aria2c -v 若能正常返回版本信息既正常

准备工作

开始使用之前需创建一个账号以及一些存放下载文件以及配置文件的目录。

  1. 创建一个登陆权限的账号 useradd -s /sbin/nologin aria2
  2. 创建一个存放下载文件的目录 mkdir /home/aria2/download
  3. 创建配置文件夹 mkdir /home/aria2/configure
  4. 设置文件夹所有者 chown -R aria2 /home/aria2

另外建议在 /home/aria2/configure 目录手动建立 dht.dat 和 aria2.session 等空文件,具体看配置文件

配置Aria2

这是最重要的一步,建议大家好好阅读 官方的文档 很多人安装了Aria2后没速度下载不了等原因大多数都是因为配置有误,下面一些我认为比较重要的配置并且都有注释仅供参考。首先创建一个文件/home/aria2/configure/aria2.conf 并写入以下内容

1
#aria2 version 1.34.0
2
##############
3
## 基本设置 ##
4
##############
5
# 文件保存路径, 默认为当前启动位置
6
dir=/home/aria2/download
7
# 日志文件
8
log=/var/log/aria2c/aria2.log
9
# 最大同时下载任务数, 运行时可修改, 默认:5
10
max-concurrent-downloads=10
11
# 检查完整性
12
check-integrity=false
13
# 断点续传
14
continue=true
15
########################
16
## HTTP/FTP/SFTP 设置 ##
17
########################
18
# 连接超时时间
19
connect-timeout=120
20
# 断开速度过慢的连接
21
lowest-speed-limit=1K
22
# 同一服务器连接数, 添加时可指定, 默认:1
23
max-connection-per-server=8
24
# 文件未找到重试次数
25
max-file-not-found=3
26
# 当服务器返回503错误时, aria2会尝试重连
27
# 尝试重连次数, 0代表无限, 默认:5
28
max-tries=10
29
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
30
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
31
min-split-size=5M
32
piece-length=5M
33
# .netrc 文件路径
34
netrc-path=/home/aria2/configure/.netrc
35
# 禁用 netrc,默认false
36
no-netrc=false
37
# 获取服务器文件时间,默认false
38
remote-time=false
39
# URI 复用  Default: true
40
reuse-uri=true
41
# 重连等待时间秒, 默认:0
42
retry-wait=30
43
# 服务器状态超时 (server-stat-timeout)
44
server-stat-timeout=86400
45
# 单个任务最大线程数, 添加时可指定, 默认:5
46
split=32
47
# 分片选择算法 default inorder geom 
48
stream-piece-selector=inorder
49
# 超时时间
50
timeout=60
51
# URI 选择算法 inorder feedback adaptive  Default: feedback
52
uri-selector=feedback
53
# 检查 HTTP 证书
54
check-certificate=true
55
# 支持 HTTP GZip
56
http-accept-gzip=true
57
# 禁用 HTTP 缓存头
58
#http-no-cache=false
59
# 启用 HTTP 持久连接
60
enable-http-keep-alive=true
61
# 启用 HTTP 管线化
62
enable-http-pipelining=true
63
# Cookies 保存路径
64
save-cookies=/home/aria2/configure/cookies
65
# 启用 HEAD 方法
66
#use-head=false
67
# 自定义 User Agent
68
#user-agent=qBittorrent v4.1.3
69
#user-agent=Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
70
user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3602.2 Safari/537.36
71
# FTP/SFTP连接复用
72
ftp-reuse-connection=true
73
#####################
74
## BitTorrent 设置 ##
75
#####################
76
# 分离仅做种任务
77
#bt-detach-seed-only=true
78
# 启用哈希检查完成事件
79
#bt-enable-hook-after-hash-check=true
80
# 本地节点查找, PT需要禁用, 默认:false
81
bt-enable-lpd=true
82
# 强制加密, 防迅雷必备
83
#bt-require-crypto=true
84
# 做种前检查文件哈希, 默认:true
85
bt-hash-check-seed=true
86
# 加载已保存的元数据文件
87
bt-load-saved-metadata=false
88
# 最多打开文件数
89
bt-max-open-files=128
90
# 单个种子最大连接数, 默认:55, 0表示不限制
91
bt-max-peers=0
92
# 仅下载种子文件
93
bt-metadata-only=false
94
# 优先下载文件头部或尾部  head[=<SIZE>],tail[=<SIZE>]
95
#bt-prioritize-piece=head[=64M],tail[=32M]
96
# 期望下载速度
97
bt-request-peer-speed-limit=5M
98
# 保存种子文件
99
bt-save-metadata=true
100
# 不检查已经下载的文件
101
bt-seed-unverified=true
102
# 任务间隔多久速度为0时停止任务(秒)
103
#bt-stop-timeout=0
104
# BT 服务器连接超时时间(秒)‬
105
bt-tracker-connect-timeout=30
106
# BT 服务器连接间隔时间 0=auto
107
bt-tracker-interval=0
108
#BT 服务器超时时间(单位:秒)
109
bt-tracker-timeout=60
110
# DHT数据文件
111
dht-file-path=/home/aria2/configure/dht.dat
112
dht-file-path6=/home/aria2/configure/dht6.dat
113
# DHT网络监听端口, 默认:6881-6999
114
dht-listen-port=6881-6999
115
# DHT 消息超时时间
116
dht-message-timeout=10
117
# 打开DHT功能, PT需要禁用, 默认:true
118
enable-dht=true
119
# 打开IPv6 DHT功能, PT需要禁用, 默认:true
120
enable-dht6=true
121
# 种子交换, PT需要禁用, 默认:true
122
enable-peer-exchange=true
123
# 当下载的是一个种子(以.torrent结尾)时, 自动开始BT任务, 默认:true
124
follow-torrent=true
125
# BT监听端口, 当端口被屏蔽时使用, 默认:6881-6999
126
listen-port=6881-6999
127
# 整体上传速度限制, 运行时可修改, 默认:0
128
max-overall-upload-limit=1M
129
# 单个任务上传速度限制, 默认:0
130
max-upload-limit=512K
131
# 客户端伪装
132
peer-agent=qBittorrent v4.1.3
133
peer-id-prefix=-qB4130-
134
#peer-agent=uTorrentMac/1870(43796)
135
#peer-id-prefix=-UM1870-
136
#peer-agent=Deluge 1.3.15
137
#peer-id-prefix=-DE13F0-
138
#peer-agent=Transmission/2.92
139
#peer-id-prefix=-TR2920-
140
# 当种子的分享率达到这个数时, 自动停止做种, 0为一直做种, 默认:1.0
141
seed-ratio=0.5
142
# 最小做种时间
143
seed-time=‪43200‬
144
#################
145
## RPC相关设置 ##
146
#################
147
# 启用RPC, 默认:false
148
enable-rpc=true
149
# 允许所有来源, 默认:false
150
rpc-allow-origin-all=true
151
# 允许非外部访问, 默认:false
152
rpc-listen-all=true
153
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
154
#event-poll=kqueue
155
# RPC监听端口, 端口被占用时可以修改, 默认:6800
156
rpc-listen-port=6800
157
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
158
#rpc-secret=
159
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
160
#rpc-user=<USER>
161
# 设置的RPC访问密码, 此选项新版已废弃, 建议改用 --rpc-secret 选项
162
#rpc-passwd=<PASSWD>
163
##############
164
## 高级设置 ##
165
##############
166
# 允许覆盖
167
allow-overwrite=true
168
# 允许分片大小变化
169
allow-piece-length-change=false
170
# 始终断点续传
171
always-resume=true
172
# 自动保存任务进度间隔时间
173
auto-save-interval=60
174
# 控制台日志级别 debug, info, notice, warn or error
175
console-log-level=notice
176
# 后台日志级别 debug, info, notice, warn or error
177
log-level=warn
178
# 禁用IPv6, 默认:false
179
disable-ipv6=false
180
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
181
disk-cache=32M
182
#另一种Linux文件缓存方式, 使用前确保您使用的内核支持此选项, 需要1.15及以上版本(?)
183
enable-mmap=true
184
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
185
# 预分配所需时间: 快none < trunc < falloc < prealloc慢
186
# falloc仅仅比trunc慢0.06s
187
# 磁盘碎片: 无falloc = prealloc < trunc = none有
188
# 推荐优先级: 高falloc --> prealloc --> trunc -->none低
189
# EXT4, btrfs, xfs, NTFS等新型文件系统建议使用falloc, falloc(fallocate)在这些文件系统上可以瞬间创建完整的空文件
190
# trunc(ftruncate) 同样是是瞬间创建文件, 但是与falloc的区别是创建出的空文件不占用实际磁盘空间
191
# prealloc 传统的创建完整的空文件, aria2会一直等待直到分配结束, 也就是说如果是在HHD上下载10G文件,那么你的aria2将会一直等待你的硬盘持续满载工作直到10G文件创建完成后才会开始下载
192
# none将不会预分配, 磁盘碎片程度受下面的disk-cache影响, trunc too
193
# 请勿在传统文件系统如:EXT3, FAT32上使用falloc, 它的实际效果将与prealloc相同
194
# MacOS建议使用prealloc, 因为它不支持falloc, 也不支持trunc, but可以尝试用brew安装truncate以支持trunc(ftruncate)
195
# 事实上我有些不能理解trunc在aria2中的角色, 它与none几乎没有区别, 也就是说:太鸡肋了
196
file-allocation=falloc
197
#优先并发下载
198
optimize-concurrent-downloads=false
199
# 整体下载速度限制, 运行时可修改, 默认:0
200
max-overall-download-limit=0
201
# 单个任务下载速度限制, 默认:0
202
max-download-limit=0
203
# 开启该参数后aria2将只接受session中的任务, 这意味着aria2一旦使用conf后将不再接受来自终端的任务, 所以该条只需要在启动rpc时加上就可以了
204
input-file=/home/aria2/configure/aria2.session
205
# 在Aria2退出时保存`错误/未完成`的下载任务到会话文件
206
save-session=/home/aria2/configure/aria2.session
207
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
208
save-session-interval=60
209
# 强制保存会话, 即使任务已经完成, 默认:false
210
# 较新的版本开启后会在任务完成后依然保留.aria2文件
211
force-save=true
212
# BT 排除服务器地址
213
#bt-exclude-tracker=
214
# BT 服务器地址
215
bt-tracker=udp://tracker.coppersurfer.tk:6969/announce,udp://tracker.internetwarriors.net:1337/announce,udp://tracker.opentrackr.org:1337/announce,udp://9.rarbg.to:2710/announce,udp://exodus.desync.com:6969/announce,http://tracker3.itzmx.com:6961/announce,udp://explodie.org:6969/announce,udp://tracker.tiny-vps.com:6969/announce,udp://thetracker.org:80/announce,udp://ipv4.tracker.harry.lu:80/announce,udp://denis.stalker.upeer.me:6969/announce,udp://tracker1.itzmx.com:8080/announce,udp://tracker.torrent.eu.org:451/announce,udp://tracker.cyberia.is:6969/announce,udp://open.stealth.si:80/announce,udp://open.demonii.si:1337/announce,udp://bt.xxx-tracker.com:2710/announce,http://tracker4.itzmx.com:2710/announce,udp://tracker1.wasabii.com.tw:6969/announce,udp://tracker.port443.xyz:6969/announce

启动Aria2

新建文件 /etc/init.d/aria2 写入以下内容后给予执行权限 chmod 755 /etc/init.d/aria2 一切准备就绪后执行 /etc/init.d/aria2 start 即可运行程序

1
#!/bin/sh
2
### BEGIN INIT INFO
3
# Provides:          aria2
4
# Required-Start:    $remote_fs $network
5
# Required-Stop:     $remote_fs $network
6
# Default-Start:     2 3 4 5
7
# Default-Stop:      0 1 6
8
# Short-Description: Aria2 Downloader
9
### END INIT INFO
10
11
case "$1" in
12
start)
13
    echo -n "Starting aria2c\n"
14
    /usr/bin/aria2c --conf-path=/home/aria2/configure/aria2.conf -D
15
;;
16
stop)
17
    echo -n "Shutting down aria2c "
18
    killall aria2c
19
;;
20
restart)
21
    echo -n "Shutting down aria2c  "
22
    killall aria2c
23
sleep 3
24
echo -n "Starting aria2c"
25
    /usr/bin/aria2c --conf-path=/home/aria2/configure/aria2.conf -D
26
;;
27
*)
28
    echo 'Usage:' `basename $0` '[option]'
29
    echo 'Available option:'
30
    for option in start stop restart
31
    do
32
    echo '  -' $option
33
    done
34
;;
35
esac

Aria2 可视化(WebUI)

以下是比较出名的其中三个 WebUI

  1. AriaNG
  2. Aria2 Web 控制台
  3. Aria2 WebUI

以 AriaNG 为例在 AriaNG 设置里修改 RPC 里的 Aria2 RPC 别名 修改为树莓派的地址,若配置文件有其他变动对应修改即可

自动更新 BT Tracker

Tracker服务器对BT下载起到客户端协调和调控的重要作用,Tracker在整个BT环境中非常关键,正所谓有个好的”老司机”是能事半功倍的;简单写个脚本每天定时从 BitTorrent trackers List 抓取最新的Tracker服务器列表并格式化更新到Aria2的配置文件中

新建文件 /home/aria2/tracker 写入以下内容后给予执行权限 chmod 755 /home/aria2/tracker

1
#!/bin/bash
2
3
#https://github.com/ngosang/trackerslist
4
#trackers_best (20 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt
5
#trackers_all (65 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
6
#trackers_all_udp (30 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_udp.txt
7
#trackers_all_http (28 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_http.txt
8
#trackers_all_https (3 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_https.txt
9
#trackers_all_ws (4 trackers) => https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all_ws.txt
10
11
list=`wget -qO- https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_best.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`
12
if [ -z "`grep "bt-tracker" /data/ser/dat/aria2/aria2.conf`" ]; then
13
    echo "Add Trackers..."
14
    sed -i '$a bt-tracker='${list} /data/ser/dat/aria2/aria2.conf
15
else
16
    echo "Update Trackers..."
17
    sed -i "s@bt-tracker=.*@bt-tracker=$list@g" /data/ser/dat/aria2/aria2.conf
18
fi
19
20
echo "Restart Aria2c..."
21
/etc/init.d/aria2 restart

执行crontab -e -u root 在文件的下面添加一行内容,在每天6点自动更新 BT Tracker 服务器列表

1
0 6 * * * /home/aria2/tracker

END

一些使用技巧

  1. 初次使用建议手动上传一个热门的种子文件,下载好并上传一段时间有助于 Aria2 建立 dht 文件
  2. 使用谷歌浏览器可搭配 YAAW for Chrome 插件使用
  3. 树莓派如需长期使用需外接一块硬盘