Aria2+AriaNg + rclone实现Google Drive离线下载

 小乔同学   2018-11-27 12:07   3737 人阅读  9 条评论


系统要求

CentOS 6+ / Debian 6+ / Ubuntu 14.04 +

本教程使用CentOS7演示

推荐 Debian 8 x64,这个是我一直使用的系统,我的脚本在这个系统上面出错率最低。

用到的工具:Aria2用于下载资源+AriaNg用于提供Web界面操作(可以使用本地程序、也可以使用其他web站点程序) + rclone用于将VPS的文件同步到Google Drive

更新系统并安装必须组件,此处安装nginx web服务器。

yum -y update
yum -y install epel-release
yum -y install wget git unzip gcc gcc-c++ openssl-devel nginx

启动nginx并设置开机自启

systemctl start nginx
systemctl enable nginx.service
systemctl stop firewalld # 关闭防火墙如果不成功用下一条
systemctl stop iptables.service  # 备用
ip addr  #查看vps服务器ip

这个时候可以访问服务器的外网IP查看nginx启动成功。

脚本版本

Ver: 1.1.10

安装步骤

执行下面的代码下载并运行脚本。(逗比大佬提供)

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh

运行脚本后会出现脚本操作菜单,选择并输入 1 就会开始安装。

使用说明

进入下载脚本的目录并运行脚本:

./aria2.sh

然后选择你要执行的选项即可。

Aria2 一键安装管理脚本 [vx.x.x]
-- Toyo | doub.io/shell-jc4 --
 
 0. 升级脚本
————————————
 1. 安装 Aria2
 2. 更新 Aria2
 3. 卸载 Aria2
————————————
 4. 启动 Aria2
 5. 停止 Aria2
 6. 重启 Aria2
————————————
 7. 修改 配置文件
 8. 查看 配置信息
 9. 查看 日志信息
10. 配置 自动更新 BT-Tracker服务器
————————————
 
当前状态: 已安装 并 已启动
 
请输入数字 [0-10]:

其他操作

启动:/etc/init.d/aria2 start

停止:/etc/init.d/aria2 stop

重启:/etc/init.d/aria2 restart

查看状态:/etc/init.d/aria2 status

配置文件:/root/.aria2/aria2.conf (配置文件包含中文注释,但是一些系统可能不支持显示中文)

令牌密匙:随机生成(可以自己修改 7. 修改 配置文件

下载目录:/usr/local/caddy/www/aria2/Download


安装成功后配置文件在/root/.aria2/aria2.conf,看一下几个比较重要的配置:

# aria2 下载文件后所在目录
dir=/usr/local/caddy/www/aria2/Download
# aria2 RPC 监听端口
rpc-listen-port=6800
# aria2 RPC 秘钥
rpc-secret=codesofun
# 下载成功后执行的脚本
on-download-complete=/root/rcloneupload.sh

将下载目录修改为 /data/Download

mkdir -p /data/Download   #新建目录
./aria2.sh  #进入Aria2菜单

选择7修改配置文件,将下载目录修改为 /data/Download


安装 AriaNg(前端/HTML+JS)

AriaNg是一个前端(HTML+JS静态)控制面板,不需要和 Aria2(后端/服务端)放在一个服务器或者设备中,你甚至可以只在服务器上面搭建Aria2后端,然后访问别人建好的 AriaNg前端面板,也可以远程操作Aria2后端!

AriaNg官方演示页面:http://ariang.mayswind.net/

本地安装(可选)

AriaNg是一个 HTML+JS 纯静态一个Aria2的Web面板,所以不需要编译任何环境。

AriaNg的前端面板可以放在你本地电脑上面,下载解压后后直接用浏览器打开 index.html 文件就能使用了。

服务器安装

在本地安装 AriaNg的话,只能局域网内访问,想要其他地方访问,还是要在服务器上面安装HTTP服务器。

下载AriaNg

mkdir -p /data/www/ariang    #创建一个Ariang目录
cd /data/www/ariang          #进入这个目录
# 下载并解压 AriaNg 文件,这段代码会自动检测并下载最新版本 #
Ver=$(wget --no-check-certificate -qO- https://api.github.com/repos/mayswind/AriaNg/releases/latest | grep -o '"tag_name": ".*"' | sed 's/"//g;s/tag_name: //g') && echo ${Ver}
 
# 如果上面自动检测最新版本的代码返回空白或者错误,那么请访问 https://github.com/mayswind/AriaNg/releases/latest 来查看最新版本号。
# 例如手动获取的版本号是 0.5.0,那么手动执行命令: Ver="0.5.0" ,然后继续下面步骤即可。
 
wget -N --no-check-certificate "https://github.com/mayswind/AriaNg/releases/download/${Ver}/AriaNg-${Ver}.zip" && unzip AriaNg-${Ver}.zip && rm -rf AriaNg-${Ver}.zip    ## 下载并解压 AriaNg 文件

配置Nginx虚拟主机

cd /etc/nginx/conf.d
touch ariang.conf
vim ariang.conf    #使用编辑  没有安装vim可以使用 yum install vim  
vim ariang.conf    #使用编辑器编辑

nginx配置(注意一定要对照一下,有时候可能粘贴不全)

server {
    listen 80;
    server_name <IP_ADDRESS>;    #<IP_ADDRESS>修改为自己的主机ip或者域名
    location / {
        root   /data/www/ariang;
        index  index.html index.htm;
    }}

现在可以使用nginx -t测试一下配置文件是否修改正确

重新加载nginx配置

systemctl reload nginx

访问http://IP_HOST即可看到ariaNg效果。

Rclone 挂载 Google Drive

1.安装Rclone

cd ~   #回到根目录  一下两行一起复制
yum -y install unzip
curl https://rclone.org/install.sh | sudo bash

2.配置

[root@localhost ~]# rclone config
2018/11/27 14:12:30 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n 
name> codesofun
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
 2 / Alias for a existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers (AWS, Ceph, Dreamhost, IBM COS, Minio)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Dropbox
   \ "dropbox"
 9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Local Disk
   \ "local"
16 / Mega
   \ "mega"
17 / Microsoft Azure Blob Storage
   \ "azureblob"
18 / Microsoft OneDrive
   \ "onedrive"
19 / OpenDrive
   \ "opendrive"
20 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
21 / Pcloud
   \ "pcloud"
22 / QingCloud Object Storage
   \ "qingstor"
23 / SSH/SFTP Connection
   \ "sftp"
24 / Webdav
   \ "webdav"
25 / Yandex Disk
   \ "yandex"
26 / http Connection
   \ "http"
Storage> 12
** See help for drive backend at: https://rclone.org/drive/ **

Google Application Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id> 
Google Application Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret> 
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1 
ID of the root folder
Leave blank normally.
Fill in to access "Computers" folders. (see docs).
Enter a string value. Press Enter for the default ("").
root_folder_id> 
Service Account Credentials JSON file path 
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> 
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> n
If your browser doesn't open automatically go to the following link:  https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=982fb9a7db490013d45c67d1999fecc4
Log in and authorize rclone for access
Enter verification code> 4/owAaAIkVMZwHI***********************
Configure this as a team drive?
y) Yes
n) No
y/n>y
Fetching team drive list...
No team drives found in your account--------------------
[codesofun]
type = drive
scope = drive
token = {"access_token":"ya29.GlthBlm33ZRXC_HEYgGa0IZixHdAFyBGULJktuRF__tHkK5MnR9JKuo2lfGXeIHvl1sL2AHXe5iUKYsY95KNnku0ULXmEXkx2sFCYrjA_SwtlYh6dDvuRSfB_Wnq","token_type":"Bearer","refresh_token":"1/2XddeAX232tfYdpNIwGZCftlTNlVvok0nnLi2iiRLWIGdyX3UuGPe77Trsk2MgtB","expiry":"2018-11-27T15:18:10.834839212+08:00"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d>y
Current remotes:

Name                 Type
====                 ====
codesofun            drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q>q

3.完成后挂载为磁盘

在Google drive创建share目录

# 新建本地文件夹,路径自己定
mkdir -p /data/GoogleDrive    
# 挂载为磁盘
rclone mount codesofun:share /data/GoogleDrive --allow-other --allow-non-empty --vfs-cache-mode writes &
#格式为[name]:[google drive dir] [mount dir]
#[name]就是配置文件是输入的name,例如我的就是ct
#[google drive dir] 这个是谷歌云盘的目录,根目录的花直接空开就可以了
#[mount dir]就是本地挂载位置,/data/GoogleDrive

如果错误可以参考一下

致命错误:无法安装FUSE fs:fusermount:exec:“fusermount”:在$ PATH中找不到可执行文件

没有安装保险丝,自行安装就可以了 yum -y install fuse

挂载完成后看看效果

[root@localhost ~]# df -h
Filesystem       Size  Used Avail Use% Mounted on
/dev/vda3         18G  1.8G   16G  10% /
devtmpfs         234M     0  234M   0% /dev
tmpfs            244M     0  244M   0% /dev/shm
tmpfs            244M  4.5M  240M   2% /run
tmpfs            244M     0  244M   0% /sys/fs/cgroup
/dev/vda1        297M   95M  203M  32% /boot
tmpfs             49M     0   49M   0% /run/user/0
codesofun:share  1.0P     0  1.0P   0% /data/GoogleDrive

设置开机自动挂载谷歌云

wget https://blog.codesofun.com/scripts/rcloned && vim rcloned
#然后修改文件内如下内容
NAME=""  #[name]
REMOTE=''  #[google drive dir]
LOCAL=''  #[mount dir]

参考

NAME="codesofun" #rclone name名
REMOTE='share' #远程文件夹
LOCAL='/data/GoogleDrive' #挂载地址

设置自启动

mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
vim /etc/rc.d/rc.local #在末尾加入 bash /etc/init.d/rcloned start
chmod +x /etc/rc.d/rc.local     #给配置权限

bash /etc/init.d/rcloned status   #测试状态

我们新建一个1.txt测试一下

cd /data/GoogleDrive   #进入vps谷歌网盘目录
touch 1.txt

在Google Drive看一下

整合Aria2 + Rclone

这个时候我们使用aria2去下载文件,下载成功后触发一个脚本让它将文件移动到Rclone同步的文件夹内,这样在Google Drive就会自动有这个文件啦。

一个新建名为rcloneupload.sh的脚本。

vim /root/rcloneupload.sh

将以下内容复制进去

#!/bin/bash

GID="$1";
FileNum="$2";
File="$3";
MinSize="5"  #限制最低上传大小,默认5k
MaxSize="157286400"  #限制最高文件大小(单位k),默认15G
RemoteDIR="/data/GoogleDrive/";  #rclone挂载的本地文件夹,最后面保留/
LocalDIR="/data/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}";
      if [[ $? == '0' ]]; then
        rm -rf "$FileLoad";
      fi
    fi
  fi
  IFS=$IFS_BAK
}
LoadFile;

保存后给予执行权限

chmod +x /root/rcloneupload.sh

然后再到Aria2配置文件中加上一行on-download-complete=/root/rcloneupload.sh即可,后面为脚本的路径。重启Aria2生效。

vim /root/.aria2/aria2.conf
on-download-complete=/root/rcloneupload.sh
/etc/init.d/aria2 restart


本文地址:http://52ga.ga/?id=18
版权声明:本文为原创文章,版权归 小乔同学 所有,欢迎分享本文,转载请保留出处!

 发表评论


表情

 评论列表

  1. 访客
    访客  @回复

    谷歌云能否搭建

  2. 访客
    访客  @回复

    第一步就崩了。。。
    -bash: yum: command not found
    怎么搞。。。

  3. 秦冉
    秦冉  @回复

    乔同学你好 根据步奏走都很成功,就是使用的时候有点问题。aria2下载没有问题,下载小文件rclone都很正常的同步到googledrive里了,但是下载的超过三个视频文件分别是2.9g、5g、4g,rclone同步drive里的大小都算2g的,这是什么情况呢?是我哪里设置错误了吗?
    2 GB (1,718,091,776个字节)、
    2 GB (2,144,337,920个字节
    2 GB (2,100,244,480个字节)

  4. 访客
    访客  @回复

    你好 配置成功后也会上传同步了 可vps重启后在用aria2下载就不会上传了 要用./aria2.sh 选6重启aria2后在下载就又会同步了 , 我原先想在宝塔计划任务里加个重启命令 发现用重启命令后,重启了但还是不会上传同步 只能进脚本选6才行 。 是那里有问题呢?

  5. 访客
    访客  @回复

    谷歌云要怎退出vim ariang.conf 的編輯??