Rat's

使用Aira2下载文件后自动上传到Google Drive网盘
说明:网盘挂载方法参考:在Debian/Ubuntu上使用rclone挂载Google Drive网盘,Aira2...
扫描右侧二维码阅读全文
30
2018/10

使用Aira2下载文件后自动上传到Google Drive网盘

说明:网盘挂载方法参考:在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的,可以参考博客另一个教程→传送门

Vultr新用户注册送100美元/16个机房按小时计费,支持支付宝,【点击查看】。
最后修改:2018 年 12 月 20 日 06 : 20 PM

发表评论 取消回复

123 条评论

  1. lucifer

    这个transmission之类的工具能照着用吗

    1. Rat's
      @lucifer

      不能

  2. cheney

    请问,我如果搭建aira2离线下载到Google drive,会自动清除vps上的文件吗

    1. Rat's
      @cheney

      会。

  3. miao

    aria2显示/bin/mv: failed to close '/root/GoogleDrive/mcc/msaimin.eXe': Input/output error 用的dd纯净Debian9

    1. miao
      @miao

      还有在上传某些文件夹时提示
      curl: (3) [globbing] unmatched close brace/bracket in column 13
      curl: (6) Could not resolve host: stay
      curl: (6) Could not resolve host: night
      curl: (6) Could not resolve host: Heaven's
      curl: (6) Could not resolve host: Feel
      curl: (6) Could not resolve host: I.presage
      curl: (3) [globbing] unmatched close brace/bracket in column 7
      curl: (3) [globbing] unmatched close brace/bracket in column 13
      /root/rcloneupload.sh: eval: line 48: unexpected EOF while looking for matching `''
      /root/rcloneupload.sh: eval: line 49: syntax error: unexpected end of file

      1. Rat's
        @miao

        转换下脚本格式看看,https://www.moerats.com/archives/225/。

  4. HYDROGEN

    请教一下目前遇到很神奇的问题...

    GD挂载正常,但是在AriaNG中下载文件永远显示下载失败。迷的是尽管显示下载失败,本地目录可以看到已经有了该文件,文件大小符合;同时也成功同步到了Google Drive指定文件夹,文件大小也符合。下载文件也是得花那么长时间,但下载完成的文件全部都是损坏的。这过程中一切运行顺利也没啥报错之类的。

    老哥有遇到过这种情况嘛?或者相应推测...

    1. LX
      @HYDROGEN

      这个我也遇到过。我查了下,改下预分配方式,有些可以用默认的prealloc。有些只能none。另外,不能直接把下载目录设置为挂载文件夹。具体的你参考log文件

    2. Rat's
      @HYDROGEN

      这个没咋遇到过。

  5. 55555555

    泪奔啊~ 无法自动上传。。。上传脚本的位置,一直aria下载的目录都填写对了呀~

    1. Rat's
      @55555555

      重启什么的都做了?

  6. chrisy

    是不是把
    if [[ $? == '0' ]]; then

    rm -rf "$FileLoad";

    删除了就不会自动删除了?

    1. Rat's
      @chrisy

      是的。

      1. chrisy
        @Rat's

        为何删除了还是会删文件

        1. Rat's
          @chrisy

          需要重启aria2才生效。

          1. chrisy
            @Rat's

            重启aria2也不行 重启服务器也不行 有点搞不懂了

            1. Rat's
              @chrisy

              抱歉,我的锅,删除命令是多余的,本身就是用的mv命令,相当于把文件移走了,所以等于删除。

              1. chrisy
                @Rat's

                哈哈 好吧 那有办法换么?用copy?

                1. Rat's
                  @chrisy

                  你可以实践下。

  7. de

    确实比较好用,比原来用的稳定多了,原来老是上传大文件就失效,现在5G以内的文件,离线下载了20几部,都完整自动转到onedrive了。

  8. steve

    老哥,似乎onedrive上传有bug?文件稍微大点超过1个g就上传不了,不知道怎么回事,800多兆倒是可以上传。。

    1. Rat's
      @steve

      这个BUG没遇到过,可能我传的文件没那么大。

  9. 文骞

    如何重启重启Aria2?

    1. Rat's
      @文骞

      用的逗比那个脚本吗?直接使用service aria2 restart重启

  10. db

    在其他软件配置里里加on-download-complete可以吗?

    1. Rat's
      @db

      不能,只能在aria2配置文件里。