头图:https://cdn.naraku.cn/imgs/Aria2.jpg
摘要:Aria2 是一个多平台轻量级,支持 HTTP、FTP、BT 等多协议、多来源的下载工具。本文以Aria2搭配OneDrive,实现自动离线下载并上传到网盘。
一开始折腾了半天,总是无法自动上传,最终参考 @ZYong 的文章成功实现~
安装Aria2
使用逗比的安装脚本,运行以下任一命令并选择
1
安装Aria2
# Github
wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
# Gitee
wget -N --no-check-certificate https://gitee.com/fengsec/Aria-OneDrive/raw/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh
# 备用命令1
wget -N --no-check-certificate https://pan.zybest.top/other/aria2.sh && chmod +x aria2.sh && bash aria2.sh
# 备用命令2
wget -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/bash
GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640";
Thread="3"; # 默认3线程,自行修改,服务器配置不好的话,不建议太多
Block="20"; # 默认分块20m,自行修改
RemoteDIR=""; # 上传到Onedrive的路径,默认为根目录,如果要上传到File目录,""里面请填成File
LocalDIR="/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'; fi
if [[ "$FileNum" -le '0' ]]; then exit 0; fi
if [[ "$#" != '3' ]]; then exit 0; fi
function LoadFile(){
if [[ ! -e "${Uploader}" ]]; then return; fi
IFS_BAK=$IFS
IFS=$'\n'
tmpFile="$(echo "${File/#$LocalDIR}" |cut -f1 -d'/')"
FileLoad="${LocalDIR}${tmpFile}"
if [[ ! -e "${FileLoad}" ]]; then return; fi
ItemSize=$(du -s "${FileLoad}" |cut -f1 |grep -o '[0-9]*' |head -n1)
if [[ -z "$ItemSize" ]]; then return; fi
if [[ "$ItemSize" -ge "$MaxSize" ]]; then
echo -ne "\033[33m${FileLoad} \033[0mtoo large to spik.\n";
return;
fi
${Uploader} -c "${Config}" -t "${Thread}" -b "${Block}" -s "${FileLoad}" -r "${RemoteDIR}" -skip
if [[ $? == '0' ]]; then
rm -rf "${FileLoad}";
fi
IFS=$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 "文件" & # 上传文件并后台运行