lala.im:Aria2离线下载后自动将文件上传到GoogleDrive

運維技術·lala.im · 2018-03-15 · 128 人浏览

原文地址:https://lala.im/2982.html,請支持原作者!該處僅作轉載。

咱们继续接着昨天的文章来完成剩下的部分,昨天写了下如何把GoogleDrive网盘挂载到VPS上面,如果你还没有将你的网盘挂载上去的话,可以先参考一下这篇文章:
挂载GoogleDrive网盘到VPS当本地硬盘的两种方法

有人可能觉得很奇怪,既然网盘都已经挂载到VPS上面了,那我Aria2下载资源的时候直接把下载目录指定到我们的挂载目录不就行了吗?为什么要多此一举先把资源下载到本地,然后再从本地上传到GoogleDrive?
这里容我废话两句,解释下为什么要这么做。
正所谓实践出真理,如果直接把下载目录指定到挂载目录,你会发现由于Google的API太辣鸡,会出现各种莫名其妙的错误,比如:文件无法写入、Aria2下载没速度、Aria2卡死、保存到GooglrDrive的文件不完整等等。无论你是用什么方法挂载的GoogleDrive都会是这种情况,不信可以自己试试。
这里说白了就是Google的API不能支持文件的标准输入与输出。再通俗点讲就是Google的API不能正常处理这种一边下载一边上传的需求。那既然不能同时处理下载与上传的需求,那我们就只好把下载和上传这两个行为分开来执行了。
思路很简单!Aria2有一个参数叫on-download-complete,这个参数的作用是当Aria2每下载完成一个任务后可以自动执行一次指定路径的脚本文件。那写个脚本执行一下上传这个动作不就OJBK了嘛?
果不其然我在网上正好找到一个别人已经写好的脚本:http://www.hostloc.com/thread-421797-1-1.html
OJBK,话不多说,直接动手试试看~
装依赖和组件:

yum -y install wget screen unzip gcc gcc-c++ openssl-devel

安装Aria2(CentOS6要升级GCC,7可以直接装):

cd /root
wget https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1.tar.gz
tar xzvf aria2-1.33.1.tar.gz
cd aria2-1.33.1
./configure
make
make install

Aria2安装好后,我们在root目录下新建一个脚本文件,命名为autoupload.sh:

vi /root/autoupload.sh

写入:

#!/bin/bash
path=$3
downloadpath='/root/downloads'
if [ $2 -eq 0 ]
        then
                exit 0
fi
while true; do
filepath=$path
path=${path%/*}; 
if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ]
    then
    rclone move "$filepath" g:      
    exit 0
elif [ "$path" = "$downloadpath" ]
    then
    mv "$filepath"/ /lala/gdrive/"${filepath##*/}"/
    exit 0
fi
done

需要修改的地方如图所示:

範例
给脚本执行权限:

chmod +x autoupload.sh

现在我们就可以启动aria2了:

aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all --rpc-secret=lala --on-download-complete=/root/autoupload.sh -c --dir /root/downloads -D

注:
1、–rpc-secret=后面的值务必修改复杂一点,这是你的rpc连接密码!如果不设置或这个值设置的很容易被人猜到,会出现严重安全问题。
2、–on-download-complete=后面要指定执行脚本的路径,如果你的脚本路径不一样这里要做相应更改。
3、–dir后面的下载路径务必要和之前脚本内的下载路径一致。
现在来安装AriaNG。
先要安装一个Nginx:

vi /etc/yum.repos.d/nginx.repo

写入:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

用yum安装:

yum -y install nginx

进入到Nginx的默认站点目录:

cd /usr/share/nginx/html

下载AriaNG并解压:

wget https://github.com/mayswind/AriaNg/releases/download/0.4.0/aria-ng-0.4.0.zip
unzip aria-ng-0.4.0.zip

注意有一个同名文件直接按y覆盖就行:

範例
启动Nginx:

systemctl start nginx

现在打开你的VPS公网IP就能访问到AriaNG了。先填写rpc连接密码,让AriaNG和Aria2连接上:

範例
连接成功后,如图所示:

範例
现在到了一个很重要的环节了,请一定要把如图所示的“最小做种时间”修改成0:

範例
这里稍微解释一下为什么要这么做:
并不是因为我们“毒瘤”只负责下载不负责上传,而是因为Aria2判断每个BT下载完成的条件是:“下载完成+最小分享率达到”。很多时候我们下载早就完成了,但是上传速度上不去,导致最小分享率一直达不到,这样Aria2就不会把这个任务标记为“已完成”。如果这个任务一直不完成的话,之前指定的脚本是不会执行的。所以这里是没有办法的办法,只能“毒瘤”一回了2333
OK,再让我们来安装一个filebrowser,用来管理我们的网盘文件和实现在线播放视频等需求。
下载并解压filebrowser:

cd /root
wget https://github.com/filebrowser/filebrowser/releases/download/v1.7.0/linux-amd64-filebrowser.tar.gz
tar -zxvf linux-amd64-filebrowser.tar.gz

写个服务,让filebrowser开机启动。
先复制可执行文件到/usr/bin:

cp /root/filebrowser /usr/bin/filebrowser

新建一个服务文件:

vi /usr/lib/systemd/system/filebrowser.service

写入:

[Unit]
Description=filebrowser
    
[Service]
User=root
ExecStart=/usr/bin/filebrowser --port 23333
Restart=on-abort
    
[Install]
WantedBy=multi-user.target

管理命令:

systemctl enable filebrowser
systemctl start filebrowser
systemctl status filebrowser
systemctl restart filebrowser
systemctl stop filebrowser

注:1是开机启动,2是现在运行,3是查看运行状态,4是重启,5是停止运行。
推荐用上述的服务方式来运行并管理filebrowser,如果你不想这样子运行filebrowser,也可以直接用screen来运行:

screen -dmS filebrowser ./filebrowser --port 23333

这样我们打开VPS的公网IP+端口23333就可以访问到filebrowser了。
默认的管理员账号密码都是admin,登录进去的第一件事就是把密码修改掉。接着我们要改变一下目录指定的路径:

範例
然后我们回到AriaNG内,尝试下载一部小姐姐资源,可以看到下载完成后不会进行上传,而是直接归类到了“已完成”:

範例
这里我们要稍等片刻,等脚本把这个文件上传到GoogleDrive内,这里的速度取决于你的VPS带宽。上传完成后,我们在filebrowser内刷新一下,可以看到之前下载的文件了:

範例
我们登录到GoogleDrive内也可以看到文件是完整保存进去了的(资源很敏感,打了马赛克2333):

範例
至此,一套完整的用Aria2离线下载并把文件保存到GoogleDirve的方案就大功告成了~
写在最后:
有几个注意事项这里务必提一下:
1、首先这个方案有一个先决条件就是你的VPS要带宽够大,并且可以随便跑。否则的话建议放弃。
2、VPS与Google网盘的上传速度要够快,否则我认为你不如去花点钱开个115年费会员。
3、尽量别下载正规影视资源,容易踩到蜜罐被封VPS,当然你的VPS是抗投诉的话那当我没说。

運維技術 lala.im
Theme Jasmine by Kent Liao