全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1022|回复: 6

发个aria2+rclone自动上传的代码

[复制链接]
发表于 2020-1-16 16:35:27 | 显示全部楼层 |阅读模式
本帖最后由 千牛 于 2020-1-16 16:47 编辑

翻了好多的帖子,都没有自己想要的aria2+rclone上传的代码,于是自己根据之前的qbittorrent+rclone然后改了一个出来
为什么新增了这样一个:很多的aria2的上传代码中,上传结束后没有删除,对于我们这种小j太难受了
使用之前需要先修改使用参数
  1. #!/bin/sh
  2. content_dir=$3
  3. files_num=$2
  4. task_id=$1
  5. downloadpath='/usr/local/caddy/www/aria2/Download' # 下载目录-需要和aria2一致
  6. log_dir="/root/.aria2"  # 这里是存放log的地方-默认和aria放在一起
  7. rclone_dest="AC"        # rclone的disk名称-需要修改
  8. rpc_pwd="pwd"           # aria2的rpc的密码-需要修改
  9. rpc_url="http://xxx.xxx.xxx:6800/jsonrpc" # aria2的rpc地址--需要修改

  10. rclone_parallel="32"


  11. if [ ! -d ${log_dir} ]
  12. then
  13.         mkdir -p ${log_dir}
  14. fi

  15. tmp_dir=$content_dir
  16. echo "原始目录:${content_dir}" >> ${log_dir}/ariaUP.log
  17. while true; do  #提取下载文件根路径,如把/data/a/b/c/d.jpg变成/data/a
  18.     content_dir="${tmp_dir}"
  19.     tmp_dir=${tmp_dir%/*};
  20.    
  21.     if test -z "${tmp_dir}"
  22.         then
  23.         break
  24.     elif [ "${tmp_dir}" = "${downloadpath}" ] && [ $2 -eq 1 ]
  25.         then
  26.         break
  27.     elif [ "${tmp_dir}" = "${downloadpath}" ]   #文件夹
  28.         then
  29.         break
  30.     fi
  31. done

  32. if [ "${files_num}" = "0" ]
  33.    then
  34.    echo -e "\t文件数量为0 直接跳过\n" >> ${log_dir}/ariaUP.log
  35.    exit
  36. fi

  37. if [ "${content_dir}" = "/" ] || [ "${tmp_dir}" != "${downloadpath}" ]
  38.     then
  39.     echo -e "\t路径异常${tmp_dir} 直接跳过\n" >> ${log_dir}/ariaUP.log
  40.     exit
  41. fi

  42. # 提取其中的相对路径-这个路径就比较绝对了
  43. relative_dir="${content_dir/${downloadpath}/}" # 移除downloadpath内容后的content_dir
  44. relative_dir="${relative_dir:1}" # 移除掉坐起斜杠
  45. echo "相对路径:${relative_dir}" >> ${log_dir}/ariaUP.log


  46. function rclone_copy(){
  47.     if [ ${type} == "file" ]
  48.     then
  49.         rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file  ${log_dir}/ariaUP.log "${content_dir}" ${rclone_dest}:)
  50.     elif [ ${type} == "dir" ]
  51.     then
  52.         rclone_copy_cmd=$(rclone -v copy --transfers ${rclone_parallel} --log-file  ${log_dir}/rloneUP.log "${content_dir}" ${rclone_dest}:"${relative_dir}")
  53.     fi
  54.     # echo '';
  55. }
  56. function rclone_del(){
  57.         rm -rf "${content_dir}";
  58.         rm -rf "${content_dir}.aria2";
  59.         curl -X POST -d "{"jsonrpc":"2.0","method":"aria2.removeDownloadResult","id":"mjj","params":["token:${rpc_pwd}","${task_id}"]}" "${rpc_url}"
  60.         # echo '';
  61. }

  62. if [ -f "${content_dir}" ]
  63. then
  64.    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 类型:文件 ${content_dir}" >> ${log_dir}/ariaUP.log
  65.    type="file"
  66.    rclone_copy
  67.    rclone_del
  68. elif [ -d "${content_dir}" ]
  69. then
  70.    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 类型:目录 ${content_dir}" >> ${log_dir}/ariaUP.log
  71.    type="dir"
  72.    rclone_copy
  73.    rclone_del
  74. else
  75.    echo "[$(date '+%Y-%m-%d %H:%M:%S')] 未知类型,取消上传" >> ${log_dir}/ariaUP.log
  76. fi

  77. echo "内容路径:${content_dir}" >> ${log_dir}/ariaUP.log
  78. echo "上传路径:${rclone_dest}:${relative_dir}" >> ${log_dir}/ariaUP.log
  79. echo "文件数:${files_num}" >> ${log_dir}/ariaUP.log
  80. echo -e "-------------------------------------------------------------\n" >> ${log_dir}/ariaUP.log
复制代码

使用方法很简单:
1. 确认你的下载路径:/root/.aria2/.aria2.conf
  1. # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
  2. dir=/usr/local/caddy/www/aria2/Download
复制代码

2. 新增aria2的下载结束任务事件
  1. on-download-complete=/root/.aria2/ariaup.sh
复制代码

3. 新建/root/.aria2/ariaup.sh并填入上面你修改好的的代码 不要忘了给运行权限
  1. chmod +x /root/.aria2/ariaup.sh
复制代码

之后重启aria2即可
---------
本人测试已经没有问题。可以下载后自动上传并删除文件记录
ps:修改自:xcy1020 AT: https://www.hostloc.com/thread-612238-1-1.html
发表于 2020-1-16 16:38:27 | 显示全部楼层
前排Mark一下。
发表于 2020-1-16 16:40:13 | 显示全部楼层
谢谢大佬分享,已经收藏
发表于 2020-1-16 16:40:35 来自手机 | 显示全部楼层
马克,感谢大佬!!
发表于 2020-1-16 16:42:12 | 显示全部楼层
马克 正好需要 感谢
发表于 2020-1-16 16:42:53 | 显示全部楼层
好东西,感谢大佬分享
发表于 2020-1-16 16:47:39 | 显示全部楼层
发个docker一键运行+ AriaNg + aria2 + h5ai
https://github.com/anshengme/docker-bt
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-4-25 10:02 , Processed in 0.062510 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表