头图:https://cdn.naraku.cn/imgs/Aria2.jpg
摘要:Aria2 是一个多平台轻量级,支持 HTTP、FTP、BT 等多协议、多来源的下载工具。本文以Aria2搭配OneDrive,实现自动离线下载并上传到网盘。
一开始折腾了半天,总是无法自动上传,最终参考 @ZYong 的文章成功实现~
安装Aria2
使用逗比的安装脚本,运行以下任一命令并选择
1安装Aria2# Githubwget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh# Giteewget -N --no-check-certificate https://gitee.com/fengsec/Aria-OneDrive/raw/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh# 备用命令1wget -N --no-check-certificate https://pan.zybest.top/other/aria2.sh && chmod +x aria2.sh && bash aria2.sh# 备用命令2wget -N --no-check-certificate https://blog.zybest.top/share/aria2.sh && chmod +x aria2.sh && bash aria2.sh
安装完成后,如果忘记配置信息或者想修改配置信息,可以运行脚本
$ bash aria2.sh
配置BT服务器。运行脚本,选择
10自动更新BT-Tracker服务器,然后输入y$ bash aria2.sh
获取授权
根据OneDrive账号版本,选择以下URL点击登录并授权
登录后会跳转到一个以
localhost开头打不开的链接,复制整条链接,包括http://loaclhost,后面会用到。如:http://localhost/onedrive-login?code=OAQABAAIAAAAm-06blBE1TpVMil8KPQ41c8bkjrEMWeBECgahoaqGcj0fJocbWU4C7RNHI7D4yyQuFy1GSSPxtd7hXG-HmiJJ68KwgNoFmE6-5duZfnpT1L2Jge8NIu1Ul6dWP0TMcNQsC.......I89IlFR-hfQuYKjZIMxF5kpikIoeIAA&session_state=6dea7d52-c3a8-4add-a4a3-421254474f40
安装OneDriveUploader。可以使用以下命令下载,也可以直接到Github/Gitee下载后上传到
/usr/local/bin/目录# 64位系统下载$ wget https://gitee.com/fengsec/Aria-OneDrive/raw/master/OneDriveUploader/amd64/linux/OneDriveUploader -P /usr/local/bin/# 32位系统下载$ wget https://gitee.com/fengsec/Aria-OneDrive/raw/master/OneDriveUploader/i386/linux/OneDriveUploader -P /usr/local/bin/# arm架构下载$ wget https://gitee.com/fengsec/Aria-OneDrive/raw/master/OneDriveUploader/arm/linux/OneDriveUploader -P /usr/local/bin/
下载完成后授权
$ chmod +x /usr/local/bin/OneDriveUploader
获取OneDrive授权,将
url换成上面复制的授权地址,包括http://loaclhost# 国际版/教育版OneDriveUploader -a "url"# 个人版/家庭版OneDriveUploader -ms -a "url"# 中国版(世纪互联)OneDriveUploader -cn -a "url"
如果提示
Init config file: /path/to/file/auth.json类似信息,则初始化成功测试。在本地随便创建一个文件,然后上传。若能上传成功再继续进行
$ touch 1.txt$ /usr/local/bin/OneDriveUploader -s "1.txt"
自动上传
在root目录下新建
rcloneupload.sh, 填入以下代码- 如果使用
aria2.sh脚本修改了下载目录,这里也需要修改#!/bin/bashGID="$1";FileNum="$2";File="$3";MaxSize="15728640";Thread="3"; # 默认3线程,自行修改,服务器配置不好的话,不建议太多Block="20"; # 默认分块20m,自行修改RemoteDIR=""; # 上传到Onedrive的路径,默认为根目录,如果要上传到File目录,""里面请填成FileLocalDIR="/usr/local/caddy/www/Download/"; # Aria2下载目录,记得最后面加上/Uploader="/usr/local/bin/OneDriveUploader"; # 上传的程序完整路径,默认为本文安装的目录Config="/root/auth.json"; # 初始化生成的配置auth.json绝对路径,参考第3步骤生成的路径if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fiif [[ "$FileNum" -le '0' ]]; then exit 0; fiif [[ "$#" != '3' ]]; then exit 0; fifunction LoadFile(){if [[ ! -e "${Uploader}" ]]; then return; fiIFS_BAK=$IFSIFS=$'\n'tmpFile="$(echo "${File/#$LocalDIR}" |cut -f1 -d'/')"FileLoad="${LocalDIR}${tmpFile}"if [[ ! -e "${FileLoad}" ]]; then return; fiItemSize=$(du -s "${FileLoad}" |cut -f1 |grep -o '[0-9]*' |head -n1)if [[ -z "$ItemSize" ]]; then return; fiif [[ "$ItemSize" -ge "$MaxSize" ]]; thenecho -ne "\033[33m${FileLoad} \033[0mtoo large to spik.\n";return;fi${Uploader} -c "${Config}" -t "${Thread}" -b "${Block}" -s "${FileLoad}" -r "${RemoteDIR}" -skipif [[ $? == '0' ]]; thenrm -rf "${FileLoad}";fiIFS=$IFS_BAK}LoadFile;
 
- 如果使用
 授权
$ chmod +x rcloneupload.sh
再修改Aria2配置文件
$ vim /root/.aria2/aria2.conf# 最后一行加入以下代码on-download-complete=/root/rcloneupload.sh
安装宝塔
一键脚本
# Centos$ yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh# Ubuntu/Deepin$ wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
安装
PHP7.2、Nginx1.16安全组放行
Aria端口,默认6800,否则AriaNg无法连接安装AriaNg
AriaNg
- 下载AriaNg源码后,在BT面板创建一个站点, 将源码放在站点根目录上即可
 - 打开网页访问该站点,显示未连接。选择左侧
AriaNg设置,右侧选择RPC,输入配置信息后刷新页面,左侧显示已连接即可 再选择左侧
Aria2设置>BitTorrent 设置,拉到最下面,最小做种时间输入0。安装OneIndex
x> 已弃坑,现转用OLAINDEX
[post cid=”58” cover=”https://cdn.naraku.cn/imgs/OLAINDEX.jpg“/]OneIndex
- 这个就不多说了,只需要添加一个站点然后放入OneIndex源码,然后访问站点安装即可,不懂的百度即可
 修改站点配置文件,把以下内容注释,避免出现404
# location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$# {# expires 30d;# error_log off;# access_log /dev/null;# }## location ~ .*\.(js|css)?$# {# expires 12h;# error_log off;# access_log /dev/null;# }
配置站点伪静态。打开站点伪静态配置,输入以下代码,并在
OneIndex后台-基本设置中勾选去掉地址栏中的/?/ (需配合伪静态使用!!)if (!-f $request_filename){set $rule_0 1$rule_0;}if (!-d $request_filename){set $rule_0 2$rule_0;}if ($rule_0 = "21"){rewrite ^/(.*)$ /index.php?/$1 last;}
自动页面页面缓存
$ crontab -e# 添加以下一行*/10 * * * * php /www/wwwroot/one/one.php cache:refresh
如果出现
Permission denied错误,直接给OneIndex目录777权限即可网盘远程下载
这里使用神器
PanDownload,具体操作方法请查看文档:PanDownload - 远程下载总结
遇到的问题
- 上传时出现:
unexpected end of JSON input- 这是因为授权文件
auth.json被误操作覆盖了,重新授权即可 
 - 这是因为授权文件
 
- 上传时出现:
 - 授权文件:
/root/auth.json - 自动上传脚本:
/root/rcloneupload.sh - Aria一键管理脚本:
/root/aria2.sh - Aria2目录:
/root/.aria2/ OneDriveUploader命令请参考OneDriveUploader下的README.md$ OneDriveUploader -s "文件" # 上传文件$ OneDriveUploader -s "文件" & # 上传文件并后台运行
