说明:网盘挂载方法参考:在Debian/Ubuntu上使用rclone挂载Google Drive网盘,Aira2
安装参考:BT种子/磁力链接下载工具:Aria2一键安装管理脚本,以上工作都准备好了后,就可以使用Aria2
将文件电影等资源下载到网盘了,鉴于hostloc
有大佬说因为某些原因,不能将下载路径默认为Google Drive
网盘指定的本地文件夹,就发现了这个方法,能直接在挂载后使用。通过配置项on-download-complete
来完成下载文件自动移到Google Drive
网盘里。
更新
【2018.10.30】
这里分享下萌咖大佬的Aira2上传脚本,不过是精简版,全能版暂不分享,精简版包含以下功能:
1、脚本适用于Rclone挂载的网盘,比如Onedrive/Google Drive等。
2、判断上传文件的文件大小区间。
限制最低上传大小:可防止产生的.aria2后缀文件一起上传到网盘。
限制最高文件大小:适用于Onedrive等,官方限制上传不能超过15G,其它可自行更改其数值。
3、支持文件名中包含空格等特殊字符。
使用方法
原理是当下载完后aria2
会给脚本传3
个参数$1
、$2
、$3
分别为gid
、文件数量、文件路径。我们对文件路径这个字符串处理一番就可以达到目的了。
新建脚本文件rcloneupload.sh
,并复制下面代码:
#!/bin/bash
GID="$1";
FileNum="$2";
File="$3";
MinSize="5" #限制最低上传大小,默认5k
MaxSize="157286400" #限制最高文件大小(单位k),默认15G
RemoteDIR="/RATS/"; #rclone挂载的本地文件夹,最后面保留/
LocalDIR="/download/"; #Aria2下载目录,最后面保留/
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(){
IFS_BAK=$IFS
IFS=$'\n'
if [[ ! -d "$LocalDIR" ]]; then return; fi
if [[ -e "$File" ]]; then
FileLoad="${File/#$LocalDIR}"
while true
do
if [[ "$FileLoad" == '/' ]]; then return; fi
echo "$FileLoad" |grep -q '/';
if [[ "$?" == "0" ]]; then
FileLoad=$(dirname "$FileLoad");
else
break;
fi;
done;
if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi
EXEC="$(command -v mv)"
if [[ -z "$EXEC" ]]; then return; fi
Option=" -f";
cd "$LocalDIR";
if [[ -e "$FileLoad" ]]; then
ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1)
if [[ -z "$ItemSize" ]]; then return; fi
if [[ "$ItemSize" -le "$MinSize" ]]; then
echo -ne "\033[33m$FileLoad \033[0mtoo small to spik.\n";
return;
fi
if [[ "$ItemSize" -ge "$MaxSize" ]]; then
echo -ne "\033[33m$FileLoad \033[0mtoo large to spik.\n";
return;
fi
eval "${EXEC}${Option}" \'"${FileLoad}"\' "${RemoteDIR}";
fi
fi
IFS=$IFS_BAK
}
LoadFile;
授权chmod +x rcloneupload.sh
,然后再到Aria2
配置文件中加上一行on-download-complete=/root/rcloneupload.sh
即可,后面为脚本的路径。最后重启Aria2
生效。
本文只提到了Google Drive
网盘挂载方法,如果你想用Onedrive
可查看→Rclone挂载Onedrive网盘教程。对于不想用Rclone
挂载Onedrive
的,可以参考博客另一个教程→传送门。
站长你好,怎么新建脚本呀
如果你是用ssh的话,touch,,nano,vi都行,不过你可以使用ftp登录vps(推荐WInSCP),鼠标右键新建文本就行了,然后把代码复制进去。
好的,但是又遇到一个问题,就是我搭建aria2+onedrive做自动上传,昨天晚上链接成功了,今天就连不上了呢
指的aria2不能连接?你可以检查下浏览器密匙,或者重启下系统。
好的,解决了,,但是又出了个问题,授权的时候出现
chmod: cannot access ‘rcloneupload.sh’: No such file or directory
授权的时候,rcloneupload.sh路径填对。
后台直接把权限改成777了可以吗
777也可以的,也可以通过FTP程序右键脚本设权限。
如何修改上传文件保存在onedrive的地址啊
这个建议多看看博客其它上传教程。
老哥。感谢分享。搭好了可以用。但是每次换个浏览器要重新填一次rpc密匙。不然连接不上
换浏览器肯定要重新填的。
给后面看教程的提个醒,aria2配置文件中的下载路径配置
dir=/root/Download
最后面不要有斜杠,否则会出现下面这样的日志:
11/03 01:29:08 [NOTICE] Download complete: /root/Download//Photon.Setup.0.3.0.exe
中间会出现2个斜杠的情况,这样参数传递给脚本就没办法处理。为此我懵逼了很久。
还有我很想知道.aria2文件如何自动删除。
这个细节倒没注意过,不过脚本里下载路径的/别去掉就行,至于.aria2 文件是下载完成后,aria2c会自动删除。只是有人反映.aria2文件会有上传现象,所以加了个上传判断。
我的.aria2文件不会删除,后来我找到原因了
force-save=ture现在toyo的aria2一键脚本现在把
这个选项开启了,就会保留.aria2文件。注释掉它就会自动删除。
现在终于完美了,下片去了。
感谢大佬的教程!
被墙了??.....
什么被墙?
网站啊
“找不到 www.moerats.com 的服务器 IP 地址”
我博客被打了两天,然后上了cf的5秒盾,所以会有这种情况,现在关了。
哦哦哦
站长您好,我的脚本遇到问题。aria2下载完成后应当调用GDupload.sh,但是日志显示"Could not execute user command: /root/GDupload.sh: No such file or directory"。我感到很困惑,on-download-complete=/root/GDupload.sh给出了绝对路径,这个问题很奇怪,不知我哪里搞错了什么。
老哥这个问题怎么解决的呢,我这边也是同样提示找不到这个文件,已经给了root 777权限
检查下编码?我给个解决方法你,首先安装一个工具,使用命令:
CentOS系统
yum install dos2unix -y
Debian/Ubuntu系统
apt install dos2unix -y
然后dos2unix /root/GDupload.sh,差不多就可以了
没给root可执行权限吧?
给了,如果没给会提示Permission Denied。反复尝试无果,我选择重装系统,从新来一遍,这次全部成功了,万幸。
脚本已更新,可以试试。
好的,多谢~
这个不需要折腾,能用就行。
rclone=${filepath/#$downloadpath/$rclone} #替换路径
有个小疑问,不是很明白这句话的作用 只有一个文件的时候,把rclone的挂载路径替换掉下载路径..
替换路径后,就可以mv移动。
我没有调参数,原文的方法1我尝试了是能够上传成功的,但是方法3我只能手动上传文件,但是不能自动上传文件,是什么原因呢?如何可以看上传的进度或者有什么日志吗?可能不能常上这个站,如果方便的话,开发者可以回复到我的邮箱吗?谢谢您!
说的是哪个教程?
onedrive+Aria2实现自动上传的,非自动脚本
能贴链接吗。这种脚本有好多。
创建脚本在哪个位置啊 任意目录下面吗
对,只要填的路径是对的就行。
脚本弄好了,配置文件也修改好了,aria2下载完文件并没有自动上传谷歌云,怎么办?
配置好了后还需要重启Aria2。
重启过了也是无反应呢,挂载也成功了
如果授权什么的都做好了还是没反应的话,这里再给个上传脚本你(只需要修改开头3个参数):
!/bin/bashpath=$3 #取原始路径,我的环境下如果是单文件则为/data/demo.png,如果是文件夹则该值为文件夹内某个文件比如/data/a/b/c/d.jpg
downloadpath='/root/Download' #Aria2下载文件目录
name='RATS' #配置Rclone时的name
folder='VPS' #网盘里的文件夹
if [ $2 -eq 0 ]
then exit 0fi
then rclone move "$filepath" ${name}:${folder}/ exit 0while true; do #提取下载文件根路径,如把/data/a/b/c/d.jpg变成/data/a
filepath=$path
path=${path%/*};
if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ] #如果下载的是单个文件
elif [ "$path" = "$downloadpath" ] #文件夹
then while [[ "`ls -A "$filepath/"`" != "" ]]; do rclone move "$filepath"/ ${name}:${folder}/"${filepath##*/}"/ --delete-empty-src-dirs done rm -rf "$filepath/" exit 0fi
done
Download complete: /usr/local/caddy/www/aria2/Download/nextcloud-14.0.0RC1.zip
/root/GDupload.sh: 1: /root/GDupload.sh: #!/bin/bash: not found
/root/GDupload.sh: 16: /root/GDupload.sh: Bad substitution
下载完看了下日志提示这个,要怎么解决呢
这个建议你百度下#!/bin/bash: not found。
bash的问题解决了,但是这个fi的问题不懂
/root/GDupload.sh: line 20: syntax error near unexpected token `fi'
/root/GDupload.sh: line 20: `fi'
这个具体百度其实都有解决方法。
我看了另一篇你的关于onedrive的文章,已经解决