linux下搭建下载机(aria2的善后)(二)
config文件
首先送上我的aria2的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 |
########################################## #基础设置 # #下载路径 dir=/root/download #日志文件的路径. 如果设置为 "-", 日志则写入到 stdout. 如果设置为空字符串(""), 日志将不会记录到磁盘上. log=/var/log/aria2.log #最大同时下载数 max-concurrent-downloads=10 #继续下载部分完成的文件. 启用此选项可以继续下载从浏览器或其他程序按顺序下载的文件. 此选项目前只支持 HTTP(S)/FTP 下载的文件. continue=true # #HTTP/FTP/SFTP设置 # #设置最大尝试次数. 0 表示不限制. max-tries=5 #aria2 不会分割小于 2*SIZE 字节的文件. 例如, 文件大小为 20MB, 如果 SIZE 为 10M, aria2 会把文件分成 2 段 [0-10MB) 和 [10MB-20MB), 并且使用 2 个源进行下载 (如果 --split >= 2). 如果 SIZE 为 15M, 由于 2*15M > 20MB, 因此 aria2 不会分割文件并使用 1 个源进行下载. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). 可以设置的值为: 1M-1024M. min-split-size=10M #下载时使用 N 个连接. 如果提供超过 N 个 URI 地址, 则使用前 N 个地址, 剩余的地址将作为备用. 如果提供的 URI 地址不足 N 个, 这些地址多次使用以保证同时建立 N 个连接. 同一服务器的连接数会被 --max-connection-per-server 选项限制. split=30 ########################################## #HTTP设置 # #检查证书 check-certificate=false #自定义 User Agent user-agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0 ########################################## #FTP/SFTP设置 # ########################################## #BitTorrent设置 # #当使用磁链下载时, 在从 DHT 获取种子元数据之前, 首先尝试加载使用 --bt-save-metadata 选项保存的文件. 如果文件加载成功, 则不会从 DHT 下载元数据. bt-load-saved-metadata=true #设置 BT/Metalink 下载全局打开的最大文件数. bt-max-open-files=100 #设置每个 BT 下载的最大连接节点数. 0 表示不限制. bt-max-peers=0 #仅下载种子文件. 种子文件中描述的文件将不会下载. 此选项仅对磁链生效. bt-metadata-only=false #尝试先下载每个文件开头或结尾的分片. 此选项有助于预览文件. 参数可以包括两个关键词: head 和 tail. 如果包含两个关键词, 需要使用逗号分隔. 每个关键词可以包含一个参数, SIZE. 例如, 如果指定 head=SIZE, 每个文件的最前 SIZE 数据将会获得更高的优先级. tail=SIZE 表示每个文件的最后 SIZE 数据. SIZE 可以包含 K 或 M (1K = 1024, 1M = 1024K). bt-prioritize-piece=head=50M,tail=50M #如果设置为"是", aria 将不会接受以前的 BitTorrent 握手协议(\\19BitTorrent 协议)并建立连接. 因此 aria2 总是模糊握手. bt-require-crypto=false #如果一个 BT 下载的整体下载速度低于此选项设置的值, aria2 会临时提高连接数以提高下载速度. 在某些情况下, 设置期望下载速度可以提高您的下载速度. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). bt-request-peer-speed-limit=500K #保存种子文件为 ".torrent" 文件. 此选项仅对磁链生效. 文件名为十六进制编码后的哈希值及 ".torrent"后缀. 保存的目录与下载文件的目录相同. 如果相同的文件已存在, 种子文件将不会保存. bt-save-metadata=true #不检查之前下载文件中每个分片的哈希值. bt-seed-unverified=false #当 BT 任务F下载速度持续为 0, 达到此选项设置的时间后停止下载. 如果设置为 0, 此功能将禁用. bt-stop-timeout=0 #逗号分隔的 BT 服务器地址. 如果服务器地址在 --bt-exclude-tracker 选项中, 其将不会生效. bt-tracker= #设置请求 BT 服务器的间隔时间 (秒). 此选项将完全覆盖服务器返回的最小间隔时间和间隔时间, aria2 仅使用此选项的值.如果设置为 0, aria2 将根据服务器的响应情况和下载进程决定时间间隔. bt-tracker-interval=0 #修改 IPv4 DHT 路由表文件路径. dht-file-path=/root/.aria2/dht.dat #修改 IPv6 DHT 路由表文件路径. dht-file-path6=/root/.aria2/dht6.dat #设置 DHT (IPv4, IPv6) 和 UDP 服务器使用的 UCP 端口. 多个端口可以使用逗号 "," 分隔, 例如: 6881,6885. 您还可以使用短横线 "-" 表示范围: 6881-6999, 或可以一起使用: 6881-6889, 6999. dht-listen-port=6880-6998 #启用 IPv4 DHT 功能. 此选项同时会启用 UDP 服务器支持. 如果种子设置为私有, 即使此选项设置为"是", aria2 也不会启用 DHT. enable-dht=true #启用 IPv6 DHT 功能. 如果种子设置为私有, 即使此选项设置为"是", aria2 也不会启用 DHT. 使用 --dht-listen-port 选项设置监听的端口. enable-dht6=false #启用节点交换扩展. 如果种子设置为私有, 即使此选项设置为"是", aria2 也不会启用此功能. enable-peer-exchange=true #如果设置为"是"或"仅内存", 当后缀为 .torrent 或内容类型为 application/x-bittorrent 的文件下载完成时, aria2 将按种子文件读取并下载该文件中提到的文件. 如果设置为"仅内存", 该种子文件将不会写入到磁盘中, 而仅会存储在内存中. 如果设置为"否", 则 .torrent 文件会下载到磁盘中, 但不会按种子文件读取并且其中的文件不会进行下载. follow-torrent=true #设置 BT 下载的 TCP 端口. 多个端口可以使用逗号 "," 分隔, 例如: 6881,6885. 您还可以使用短横线 "-" 表示范围: 6881-6999, 或可以一起使用: 6881-6889, 6999. listen-port=6880-6998 #设置全局最大上传速度 (字节/秒). 0 表示不限制. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). max-overall-upload-limit=50K #设置每个任务的最大上传速度 (字节/秒). 0 表示不限制. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). max-upload-limit=10K #指定分享率. 当分享率达到此选项设置的值时会完成做种. 强烈建议您将此选项设置为大于等于 1.0. 如果您想不限制分享比率, 可以设置为 0.0. 如果同时设置了 --seed-time 选项, 当任意一个条件满足时将停止做种. seed-ratio=1.0 #此选项设置为 0 时, 将在 BT 任务下载完成后不进行做种. seed-time=3600 ########################################## #Metalink设置 # #如果设置为"是"或"仅内存", 当后缀为 .meta4 或 .metalink 或内容类型为 application/metalink4+xml 或 application/metalink+xml 的文件下载完成时, aria2 将按 Metalink 文件读取并下载该文件中提到的文件. 如果设置为"仅内存", 该 Metalink 文件将不会写入到磁盘中, 而仅会存储在内存中. 如果设置为"否", 则 .metalink 文件会下载到磁盘中, 但不会按 Metalink 文件读取并且其中的文件不会进行下载. follow-metalink=true #指定首选使用的协议. 可以设置为 http, https, ftp 或"无". 设置为"无"时禁用此选项. metalink-preferred-protocol=none #如果一个 Metalink 文件可用多种协议, 并且此选项设置为"是", aria2 将只会使用其中一种. 使用 --metalink-preferred-protocol 参数指定首选的协议. metalink-enable-unique-protocol=true ########################################## #RPC设置 # #启用 JSON-RPC/XML-RPC 服务器 enable-rpc=true #当种子文件下载完成后暂停后续的下载. 在 aria2 中有 3 种种子文件的下载类型: (1) 下载 .torrent 文件. (2) 通过磁链下载的种子文件. (3) 下载 Metalink 文件. 这些种子文件下载完后会根据文件内容继续进行下载. 此选项会暂停这些后续的下载. 此选项仅当 --enable-rpc 选项启用时生效. pause-metadata=false #接受所有远程请求,在 RPC 响应头增加 Access-Control-Allow-Origin 字段, 值为 * . rpc-allow-origin-all=true #在所有网络适配器上监听 JSON-RPC/XML-RPC 的请求, 如果设置为"否", 仅监听本地网络的请求. rpc-listen-all=true #监听端口 rpc-listen-port=6800 #设置 JSON-RPC/XML-RPC 最大的请求大小. 如果 aria2 检测到请求超过设定的字节数, 会直接取消连接. rpc-max-request-size=2M #在 dir 选项设置的目录中保存上传的种子文件或 Metalink 文件. 文件名包括 SHA-1 哈希后的元数据和扩展名两部分. 对于种子文件, 扩展名为 '.torrent'. 对于 Metalink 为 '.meta4'. 如果此选项设置为"否", 通过 aria2.addTorrent() 或 aria2.addMetalink() 方法添加的下载将无法通过 --save-session 选项保存. rpc-save-upload-metadata=true #设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项 rpc-secret=534701691 ########################################## #高级设置 # #如果相应的控制文件不存在时从头重新下载文件. 参见 --auto-file-renaming 选项. allow-overwrite=false #如果设置为"否", 当分片长度与控制文件中的不同时, aria2 将会中止下载. 如果设置为"是", 您可以继续, 但部分下载进度将会丢失. allow-piece-length-change=true #始终断点续传. 如果设置为"是", aria2 始终尝试断点续传, 如果无法恢复, 则中止下载. 如果设置为"否", 对于不支持断点续传的 URI 或 aria2 遇到 N 个不支持断点续传的 URI (N 为 --max-resume-failure-tries 选项设置的值), aria2 会从头下载文件. 参见 --max-resume-failure-tries 参数. always-resume=true #异步 DNS async-dns=true #重新命名已经存在的文件. 此选项仅对 HTTP(S)/FTP 下载有效. 新的文件名后会在文件名后、扩展名 (如果有) 前追加句点和数字(1..9999). auto-file-renaming=true #每隔设置的秒数自动保存控制文件(*.aria2). 如果设置为 0, 下载期间控制文件不会自动保存. 不论设置的值为多少, aria2 会在任务结束时保存控制文件. 可以设置的值为 0 到 600. auto-save-interval=60 #仅当本地文件比远程文件旧时才进行下载. 此功能仅适用于 HTTP(S) 下载. 如果在 Metalink 中文件大小已经被指定则功能无法生效. 同时此功能还将忽略 Content-Disposition 响应头. 如果存在控制文件, 此选项将被忽略. 此功能通过 If-Modified-Since 请求头获取较新的文件. 当获取到本地文件的修改时间时, 此功能将使用用户提供的文件名 (参见 --out 选项), 如果没有指定 --out 选项则使用 URI 中的文件名. 为了覆盖已经存在的文件, 需要使用 --allow-overwrite 参数. conditional-get=false #控制台日志级别 console-log-level=notice #启用后台进程 daemon=true #如果设置为"是", aria2 在启动时不会读取 --input-file 选项设置的文件中的所有 URI 地址, 而是会在之后需要时按需读取. 如果输入文件中包含大量要下载的 URI, 此选项可以减少内存的使用. 如果设置为"否", aria2 会在启动时读取所有的 URI. 当 -save-session 使用时将会禁用 --deferred-input 选项. deferred-input=false #禁用 IPv6 disable-ipv6=true #启用磁盘缓存. 如果设置为 0, 将禁用磁盘缓存. 此功能将下载的数据缓存在内存中, 最多占用此选项设置的字节数. 缓存存储由 aria2 实例创建并对所有下载共享. 由于数据以较大的单位写入并按文件的偏移重新排序, 所以磁盘缓存的一个优点是减少磁盘的 I/O. 如果调用哈希检查时并且数据缓存在内存中时, 将不需要从磁盘中读取. 大小可以包含 K 或 M (1K = 1024, 1M = 1024K). disk-cache=16M #此选项将修改下载结果的格式. 如果设置为"默认", 将打印 GID, 状态, 平均下载速度和路径/URI. 如果涉及多个文件, 仅打印第一个请求文件的路径/URI, 其余的将被忽略. 如果设置为"完整", 将打印 GID, 状态, 平均下载速度, 下载进度和路径/URI. 其中, 下载进度和路径/URI 将会每个文件打印一行. 如果设置为"隐藏", 下载结果将会隐藏. download-result=default #指定文件分配方法. "无" 不会预先分配文件空间. "prealloc"会在下载开始前预先分配空间. 这将会根据文件的大小需要一定的时间. 如果您使用的是较新的文件系统, 例如 ext4 (带扩展支持), btrfs, xfs 或 NTFS (仅 MinGW 构建), "falloc" 是最好的选择. 其几乎可以瞬间分配大(数 GiB)文件. 不要在旧的文件系统, 例如 ext3 和 FAT32 上使用 falloc, 因为与 prealloc 花费的时间相同, 并且其会阻塞 aria2 知道分配完成. 当您的系统不支持 posix_fallocate(3) 函数时, falloc 可能无法使用. "trunc" 使用 ftruncate(2) 系统调用或平台特定的实现将文件截取到特定的长度. 在多文件的 BitTorrent 下载中, 若某文件与其相邻的文件共享相同的分片时, 则相邻的文件也会被分配. file-allocation=prealloc #即使任务完成或删除时使用 --save-session 选项时也保存该任务. 此选项在这种情况下还会保存控制文件. 此选项可以保存被认为已经完成但正在做种的 BT 任务. force-save=true #(v1.27.0或更高)当使用 --save-session 选项时, 即使当任务中的文件不存在时也保存该下载任务. 此选项同时会将这种情况保存到控制文件中. save-not-found=true #如果设置为"是", 哈希检查完使用 --check-integrity 选项, 根据是否下载完成决定是否终止下载. hash-check-only=false #在控制台输出可读格式的大小和速度 (例如, 1.2Ki, 3.4Mi). human-readable=true #设置内存中存储最多的下载结果数量. 下载结果包括已完成/错误/已删除的下载. 下载结果存储在一个先进先出的队列中, 因此其可以存储最多指定的下载结果的数量. 当队列已满且有新的下载结果创建时, 最老的下载结果将从队列的最前部移除, 新的将放在最后. 此选项设置较大的值后如果经过几千次的下载将导致较高的内存消耗. 设置为 0 表示不存储下载结果. 注意, 未完成的下载将始终保存在内存中, 不考虑该选项的设置. 参考 --keep-unfinished-download-result 选项. max-download-result=1000 #当 --always-resume 选项设置为"否"时, 如果 aria2 检测到有 N 个 URI 不支持断点续传时, 将从头开始下载文件. 如果 N 设置为 0, 当所有 URI 都不支持断点续传时才会从头下载文件. 参见 --always-resume 选项. max-resume-failure-tries=0 #指定启用的最低 SSL/TLS 版本. min-tls-version=TLSv1 #日志级别 log-level=debug #(v1.22.0或更高)根据可用带宽优化并发下载的数量. aria2 使用之前统计的下载速度通过规则 N = A + B Log10 (速度单位为 Mbps) 得到并发下载的数量. 其中系数 A 和 B 可以在参数中以冒号分隔自定义. 默认值 (A=5, B=25) 可以在 1Mbps 网络上使用通常 5 个并发下载, 在 100Mbps 网络上为 50 个. 并发下载的数量保持在 --max-concurrent-downloads 参数定义的最大之下. optimize-concurrent-downloads=false #设置 HTTP/FTP 下载的分配大小. aria2 根据这个边界分割文件. 所有的分割都是这个长度的倍数. 此选项不适用于 BitTorrent 下载. 如果 Metalink 文件中包含分片哈希的结果此选项也不适用. piece-length=1M #显示控制台输出 show-console-readout=true #设置下载进度摘要的输出间隔(秒). 设置为 0 禁止输出. summary-interval=0 #设置全局最大下载速度 (字节/秒). 0 表示不限制. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). max-overall-download-limit=5M #设置每个任务的最大下载速度 (字节/秒). 0 表示不限制. 您可以增加数值的单位 K 或 M (1K = 1024, 1M = 1024K). max-download-limit=0 #禁用配置文件 no-conf=false #禁用控制台输出 quiet=true #实时数据块验证,如果提供了数据块的校验和, 将在下载过程中通过校验和验证数据块. realtime-chunk-checksum=true #在下载前删除控制文件. 使用 --allow-overwrite=true 选项时, 总是从头开始下载文件. 此选项将有助于使用不支持断点续传代理服务器的用户. remove-control-file=false #当退出时保存错误及未完成的任务到指定的文件中. 您可以在重启 aria2 时使用 --input-file 选项重新加载. 如果您希望输出的内容使用 GZip 压缩, 您可以在文件名后增加 .gz 扩展名. 请注意, 通过 aria2.addTorrent() 和 aria2.addMetalink() RPC 方法添加的下载, 其元数据没有保存到文件的将不会保存. 通过 aria2.remove() 和 aria2.forceRemove() 删除的下载将不会保存. save-session=/root/.aria2/aria2.session #每隔此选项设置的时间(秒)后会保存错误或未完成的任务到 --save-session 选项指定的文件中. 如果设置为 0, 仅当 aria2 退出时才会保存. save-session-interval=100 input-file=/root/.aria2/aria2.session |
手动启动进行测试,配置文件路径自行补全
1 |
aria2c --conf-path=/.../aria2.conf |
确保没有保存正确运行
启动脚本
通过apt安装的aria2是不会开机启动的,需要手动启动,很麻烦,因此写一个启动脚本,放到/etc/init.d/下
1 2 |
cd /etc/init.d sudo vim aria2c |
内容如下,配置文件路径自行补全
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#!/bin/sh case "$1" in start) aria2c --conf-path=/.../aria2.conf & echo "Starting Aria2" ;; stop) killall aria2c echo "Stopping Aria2" ;; restart) killall aria2c echo "Stopping Aria2" aria2c --conf-path=/.../aria2.conf & echo "Starting Aria2" ;; *) echo "Usage: /etc/init.d/aria2 {start|stop|restart}" exit 1 ;; esac exit |
给执行权限
1 |
sudo chmod 755 aria2c |
并没有按照LSB标准来写,有兴趣可以补全
1 |
sudo update-rc.d aria2c defaults |
守护脚本
为了保证aria2下载器的稳定性,我们写一个定时启动的守护脚本,每一小时启动一次,确保aria2进程存在,否则启动aria2
1 2 |
cd /etc/cron.hourly sudo vim aria2c-deamon.sh |
1 2 3 4 5 |
#!/bin/sh var=`ps -ef|grep "aria2c --conf"|grep -v grep|wc -l` if [ $var -eq 0 ] ;then /etc/init.d/aria2 start & fi |
给执行权限
1 |
sudo chmod 755 aria2c-deamon.sh |
bt-tracker更新脚本
此时如果添加bt任务下载很有可能会没有速度,细心的话应该注意到配置文件中bt-tracker=我留空了,因为bt下载中tracker服务很重要,如果tracker服务器信息滞后bt任务下载速度慢的一大原因,所以这一项我们要写一个脚本来自动更新,脚本计划每天运行
1 2 |
cd /etc/cron.daily/ sudo vim tracker-update.sh |
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash 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=" /home/sirius/.aria2/aria2.conf`" ]; then sed -i '$a bt-tracker='${list} /home/sirius/.aria2/aria2.conf echo add done else sed -i "s@bt-tracker.*@bt-tracker=$list@g" /home/sirius/.aria2/aria2.conf echo update done fi /etc/init.d/aria2c restart |
给执行权限
1 |
sudo chmod 755 tracker-update.sh |
UPnP
在我的config文件中,指定bt任务使用了6880-6998,这119个端口,然而aria2并不支持UPnP的协议,这意味着想建立完整的P2P下载,需要去路由器里手动设置端口映射,然而我的路由器并不支持批量设定,119个端口简直要命,所以我们还需要确保路由器支持UPnP,然后通过一个UPnP软件批量注册,这里我们安装MiniUPnP的客户端
1 |
sudo apt-get install miniupnpc |
写一个脚本循环执行
1 2 |
cd ~ vim upnp-add.sh |
1 2 3 4 5 6 7 8 |
#!/bin/bash for((i=6880;i<=6998;i++)); do upnpc -a 192.168.3.250 $i $i TCP; upnpc -a 192.168.3.250 $i $i UDP; done exit |
给执行权限
1 |
sudo chmod 755 upnp-add.sh |
运行一下,等他慢慢注册完