功能
支持上传文件和文件夹到指定目录,并保持上传前的目录结构。
支持命令参数使用,方便外部程序调用。
支持自定义上传分块大小。
支持多线程上传(多文件同时上传)。
支持根据文件大小动态调整重试次数,对抗不好的网络环境。
使用
Github地址:https://github.com/MoeClub/OneList/tree/master/OneDriveUploader
64位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/amd64/linux/OneDriveUploader -P /usr/local/bin/
32位系统下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/i386/linux/OneDriveUploader -P /usr/local/bin/
arm架构下载
wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/arm/linux/OneDriveUploader -P /usr/local/bin/
给予权限
chmod +x /usr/local/bin/OneDriveUploader
授权
通过下面URL登录 (右键新标签打开)
国际版, 个人版(家庭版)
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=78d4dc35-7e46-42c6-9023-2d39314433a5&response_type=code&redirect_uri=http://localhost/onedrive-login&response_mode=query&scope=offline_access%20User.Read%20Files.ReadWrite.All
初始化配置文件
国际版
OneDriveUploader -a "url"
个人版(家庭版)
OneDriveUploader -ms -a "url"
中国版(世纪互联)
OneDriveUploader -cn -a "url"
在浏览器地址栏中获取以 http://loaclhost 开头的整个url内容
将获取的完整url内容替换命令中的 url 三个字母
每次产生的 url 只能用一次, 重试请重新获取 url
此操作将会自动初始化的配置文件
提示 Init config file: '/path/to/auth.json' 则成功
原理是当下载完后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生效。
感谢博主的分享,码住有机会会用上的