利用Aria2实现在个人服务器上的离线下载

来源:原创 发布时间:2019年05月24日 10点45分39秒 作者:hl668 阅读量:39

我们会涉及到以下软件:

  • aria2:用于下载资源

  • ariaNg:用于提供Web界面操作,这步使用nginx或其他web服务器都可以。

  • rclone:用于将VPS的文件同步到Google Drive

本文介绍的是在Google Drive上操作​​,当然在OneDrive也是可以的,至于怎么撸GoogleDrive无限空间这个博主不做介绍,请自行搜索。



准备环境

  • 一台vps主机,博主使用CentOS进行演示

  • 内存> = 512MB

  • KVM架构

  • 硬盘最好> = 10G

  • 一个谷歌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 # 关闭防火墙

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


直接浏览器输入vps主机的地址即可。如下面图片显示就代表安装成功:




安装AriaNg

安装aria2

Aria2是一个命令行下运行,多协议,多来源下载工具,支持磁力链接,BT种子,HTTP,FTP等下载协议,当然因为它是命令行下载工具,所以我们想下载一个东西还需要去敲命令Aran2的API开发了一些在线管理面板,可以直接在网页上面添加管理任务。


先安装aria2服务端,使用逗比大佬的脚本


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


安装成功后配置文件在/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

接着选择7 然后选择3



其他操作

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

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

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

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

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

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

  • 下载目录:/data/Download


安装AriaNg

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

 

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


下载AriaNg  一次执行一下命令即可:

mkdir -p /data/www/ariang

cd /data/www/ariang

wget https://github.com/mayswind/AriaNg-DailyBuild/archive/master.zip && unzip master.zip

mv AriaNg-DailyBuild-master/* .

rm -rf master.zip AriaNg-DailyBuild-master


接下来就是配置虚拟主机了。使得可以ip访问:

先依次执行:

cd /etc/nginx/conf.d
touch ariang.conf

这里注意了如果显示没安装先安装vim 输入:yum -y install vim即可

然后继续刚刚的 输入:

vim ariang.conf

把nginx的配置写到这里即可

这里注意 配置中的sever__name后面IP地址 改成你的vps的ip


nginx配置如下:

server {
   listen 80;
   server_name <IP_ADDRESS>;

   location / {
       root /data/www/ariang;
       index index.html index.htm;
   }
}

可以使用nginx -t测试一下配置文件是否修改正确,显示如下就代表正确




然后重新加载nginx配置


systemctl reload nginx


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



然后把刚刚保存的密码写进去




填写后就连接成功了






配置Google Drive

挂载Google Drive到VPS


安装Rclone


yum -y install unzip
curl https://rclone.org/install.sh | sudo bash


成功后如下显示



然后输入:rclone config

输入n ,自定义个名字,点击回车。然后选择12 回车,再回车两次,选择n 再n,然后授权登陆打开提示的网站即可。再依次输入y, y, q退出



完成后挂载为磁盘


# 新建本地文件夹,路径自己定
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


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


设置自启动

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


整合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


请开始你的表演


上一篇:
下一篇:

我要评论

随机文章

  Popular Tags

MY Blog   我要留言