Aria2+Rclone配合OneDrive、Google Drive等网盘实现离线下载

Aria2+Rclone配合OneDrive、Google Drive等网盘实现离线下载

Aria2简介

Aria2 完美配置是一套 Aria2 配置方案,包含了配置文件、附加功能脚本等文件,用于实现 Aria2 功能的增强和扩展,提升 Aria2 的下载速度与使用体验,解决 Aria2 在使用中遇到的 BT 下载无速度、文件残留占用磁盘空间、任务丢失、重复下载等问题。

功能特性

  • BT下载率高、速度快
  • 重启后不丢失任务进度、不重复下载
  • 下载错误或取消下载自动删除未完成的文件防止磁盘空间占用
  • 下载完成自动清除.aria2后缀名文件
  • 一键获取BT tracker,进一步提升BT下载速度
  • 更好的PT下载支持
  • 有一定的防版权投诉、防迅雷吸血效果
  • 联动RCLONE自动上传到Google Drive和OneDrive等网盘

Aria2部署

1)Aria2 一键安装,系统要求CentOS 6+ / Debian 6+ / Ubuntu 14.04+,以 Debian 为例子,安装命令如下:

为了确保能正常使用,请先安装基础组件wget、curl、ca-certificates,以 Debian/centos为例子:

apt install wget curl ca-certificates  #debian
yum install wget curl ca-certificates #centos

2)下载脚本

wget -N git.io/aria2.sh && chmod +x aria2.sh

Aria2项目GITHUB:

 

3)运行脚本

./aria2.sh

4)选择你要执行的选项,选择对应的安装选项。

Aria2 一键安装管理脚本 增强版 [v2.7.4] by P3TERX.COM
 
  0. 升级脚本
 ———————————————————————
  1. 安装 Aria2
  2. 更新 Aria2
  3. 卸载 Aria2
 ———————————————————————
  4. 启动 Aria2
  5. 停止 Aria2
  6. 重启 Aria2
 ———————————————————————
  7. 修改 配置
  8. 查看 配置
  9. 查看 日志
 10. 清空 日志
 ———————————————————————
 11. 手动更新 BT-Tracker
 12. 自动更新 BT-Tracker
 ———————————————————————
 
 Aria2 状态: 已安装 | 已启动
 
 自动更新 BT-Tracker: 已开启
 
 请输入数字 [0-12]:

5)安装完成后,Aria2 一键安装管理脚本会显示你的配置信息,把这些信息记下来。

Aria2 简单配置信息:

 IPv4 地址      : *.*.*.*
 IPv6 地址      : IPv6 地址检测失败
 RPC 端口       : 6800
 RPC 密钥       : 122sd1111123456df42
 下载目录       : /root/downloads
 AriaNg 链接    : http://ariang.js.org/#!/settings/rpc/set/ws/*.*.*.*/6800/jsonrpc/ZjFdfkdikDAmNDI=

Aria2+Rclone配合OneDrive、Google Drive等网盘实现离线下载

Aria2简单使用

Aria2 默认已经自带了Aria2NG了,打开:http://ariang.js.org/#xxxx那一串地址,就可以进入Aria2 离线下载界面了。

  • 如果显示一直不能连接,在宝塔安全放行6800端口,就可以成功了连接~
  • 可以添加一个下载任务,就能看到Aria2 离线下载进度了。
  • Aria2 离线下载最大的速度取决你的VPS主机的带宽,主机商不会让你长期占满带宽。
  • 如果你发现离线下载BT没有速度,请打开Aria2自动更新种子功能。

Aria2 基本操作命令

  • 启动:/etc/init.d/aria2 start | service aria2 start
  • 停止:/etc/init.d/aria2 stop | service aria2 stop
  • 重启:/etc/init.d/aria2 restart | service aria2 restart
  • 查看状态:/etc/init.d/aria2 status | service aria2 status
  • 配置文件路径:/root/.aria2c/aria2.conf (配置文件有中文注释,若语言设置有问题会导致中文乱码)
  • 默认下载目录:/root/downloads
  • RPC 密钥:随机生成,可使用选项7. 修改 配置文件自定义

Aria2配置文件说明

TIPS: 脚本需配合配置文件使用,仅适用于 GNU/​Linux

文件 说明
aria2.conf Aria2 配置文件。仅适用于 Aria2 1.35.0 及以上版本,在不了解的情况下修改可能导致本方案的特性失效。
delete.sh 文件删除脚本。在下载停止后执行(on-download-stop),自动删除文件及 .aria2 后缀名文件,防止不必要的磁盘空间占用。(默认启用)
clean.sh 清理脚本。在下载完成后执行(on-download-complete),自动清除 .aria2 后缀名文件。(默认启用)
upload.sh 上传脚本。在下载完成后执行(on-download-complete),自动调用 RCLONE 上传(move)下载的文件到网盘,并自动清除 .aria2 后缀名文件与空目录。(默认不启用)
move.sh 文件移动脚本。在下载完成后执行(on-download-complete),自动将下载完成的文件移动到指定目录,并自动清除 .aria2 后缀名文件与空目录。(默认不启用)
tracker.sh BT tracker 列表更新脚本。在 Aria2 配置文件(aria2.conf)所在目录执行即可获取最新 tracker 列表并添加到配置文件中。此脚本还有更强大的功能,具体使用方法详见 tracker.md
dht.dat
dht6.dat
DHT 文件。提升 BT 下载率和下载速度的关键之一。相关科普:《解决 Aria2 无法下载磁力链接、BT种子和速度慢的问题》

配置自动上传脚本

Aria2 一键安装管理脚本 增强版 整合了 Aria2 完美配置 ,安装后会附带一些附加功能脚本功能脚本,RCLONE 自动上传脚本就是其中之一。由于默认不启用,所以需要手动启用。

TIPS: 本项目的上传脚本使用更稳定快速的原生命令上传方式,而非处在测试阶段的挂载方式,这点和一般的脚本不同。
输入以下命令打开 Aria2 配置文件进行修改

nano /root/.aria2c/aria2.conf

或使用Aria2 一键安装管理脚本 增强版中的手动修改选项打开配置文件进行修改。找到“下载完成后执行的命令”,把clean.sh替换为upload.sh。

下载完成后执行的命令

on-download-complete=/root/.aria2c/upload.sh

nano 编辑器的操作方法参见《Linux 下适合新手的文本编辑器 nano 使用教程》
输入以下命令打开附加功能脚本配置文件进行修改

nano /root/.aria2c/script.conf

有中文注释,按照自己的实际情况进行修改,第一次使用只建议修改网盘名称。

网盘名称(如下面教程中RCLONE 配置时填写的onedrive的name为remote,谷歌网盘为Google)

drive-name=remote

重启 Aria2 。脚本选项重启或者执行以下命令:

service aria2 restart

检查配置是否成功

执行upload.sh脚本,提示success即代上传脚本能正常被调用,否则请检查与 RCLONE 有关的配置。

/root/.aria2c/upload.sh

打开实时日志并下载任意文件,出现上传成功信息即代表配置成功,否则请认真阅读教程并重新开始。
检查网盘是否存在相关文件,若不存在说明你搞错网盘了。

Aria2+Rclone配合OneDrive、Google Drive等网盘实现离线下载

Rclone介绍

Rclone是一个的命令行工具,支持在不同对象存储、网盘间同步、上传、下载数据。并且通过一些设置可以实现离线下载、服务器备份等非常实用的功能。这里以 OneDrive 和 Google Drive 为例子,进行连接配置,其它网盘的操作类似。由于是交互式配置选项,只要能看懂基本没有任何难度。

安装Rclone

RCLONE 官方提供了一键安装脚本:

curl https://rclone.org/install.sh | sudo bash

Rclone 连接 OneDrive

获取 token

在本地Win­dows电脑上下载rclone win版,然后解压出来,解压后进入文件夹,在资源管理器地址栏输入cmd,回车就会在当前路径打开命令提示符。输入以下命令:

rclone authorize "onedrive"

接下来会弹出浏览器,要求你登录账号进行授权。授权完后命令提示符窗口会出现以下信息:

If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Paste the following into your remote machine --->
{"access_token":"xxxxxxxx"}  # 注意!复制{xxxxxxxx}整个内容,并保存好,后面需要用到
<---End paste

配置 Rclone

输入以下命令

rclone config

会出现以下信息,参照下面的注释进行操作。
TIPS: 因为 RCLONE 会时不时进行更新,当你看到这篇教程时菜单选项可能已经发生了略微的改动,但大致思路不会变,不要无脑照搬操作。

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> n	# 选择n,新建
name> remote	# 输入名称,类似于标签,用于区分不同的网盘。
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
[snip]
XX / Microsoft OneDrive
    "onedrive"
[snip]
Storage>XX	# 选择Microsoft OneDrive对应的数字
Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>	# 留空,回车
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>	# 留空,回车
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n	# 选n
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n	# 选n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine:
    rclone authorize "onedrive"
Then paste the result below:
result> {"XXXXXXXX"}  # 复制上面Win下获取的token值到这里
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
    "onedrive"
 2 / Sharepoint site
    "sharepoint"
 3 / Type in driveID
    "driveid"
 4 / Type in SiteID
    "siteid"
 5 / Search a Sharepoint site
    "search"
Your choice> 1	# 这里问你要选择的类型,选1
Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
Chose drive to use:> 0	# 程序找到网盘,编号是什么数字就填什么数字,一般是0
Found drive 'root' of type 'business', URL: https://org-my.sharepoint.com/personal/you/Documents
Is that okay?
y) Yes
n) No
y/n> y
--------------------
[remote]
type = onedrive
token = {"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2021-12-07T09:39:52.486512262+08:00"}
drive_id = b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
drive_type = business
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y  # 选y
Current remotes:

Name                 Type
====                 ====
remote               onedrive

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  # 选q,退出

至此,Rclone 已成功连接到了 OneDrive 网盘。

Rclone 连接 Google Drive

与 OneDrive 不同的是,Google Drive 不需要本地 Win­dows 客户端预先进行授权获取 to­ken,而是在配置过程中进行授权。

配置 Rclone

输入以下命令

rclone config

会出现以下信息,参照下面的注释进行操作。
TIPS: 因为 RCLONE 会时不时进行更新,当你看到这篇教程时菜单选项可能已经发生了略微的改动,但大致思路不会变,不要无脑照搬操作。

No remotes found - make a new one
n) New remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
n/r/c/s/q>  n  # 选择n,新建
name> Google  # 输入名称,类似于标签,用于区分不同的网盘。
Type of storage to configure.
Choose a number from below, or type in your own value
[snip]
XX / Google Drive
    "drive"
[snip]
Storage>XX		# 选择Google Drive对应的数字
Google Application Client Id - leave blank normally.
client_id>	# 留空,回车
Google Application Client Secret - leave blank normally.
client_secret>	# 留空,回车
Scope that rclone should use when requesting access from drive.
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	# 选择1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id>	# 留空,回车
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>	# 留空,回车
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	# 选n
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a Shared Drive (Team Drive)?
y) Yes
n) No
y/n> y	# 选n
--------------------
[remote]
client_id = 
client_secret = 
scope = drive
root_folder_id = 
service_account_file =
token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2014-03-16T13:57:58.955387075Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
Current remotes:

Name                 Type
====                 ====
Google               drive
remote               onedrive

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

至此,Rclone 已成功连接到了 Google Drive 网盘。

rclone设置

  • rclone config - 进入交互式配置选项,进行添加、删除、管理网盘等操作。
  • rclone config file - 显示配置文件的路径,一般配置文件在 ~/.config/rclone/rclone.conf
  • rclone config show - 显示配置文件信息

rclone命令语法

本地到网盘

rclone [功能选项] <本地路径> <网盘名称:路径> [参数] [参数] ...

网盘到本地

rclone [功能选项] <网盘名称:路径> <本地路径> [参数] [参数] ...

网盘到网盘

rclone [功能选项] <网盘名称:路径> <网盘名称:路径> [参数] [参数] ...

示例:

rclone move -v /files ftp:/files --transfers=1

rclone选项

  • rclone copy - 复制
  • rclone move - 移动,如果要在移动后删除空源目录,请加上 --delete-empty-src-dirs 参数
  • rclone sync - 同步:将源目录同步到目标目录,只更改目标目录。
  • rclone size - 查看网盘文件占用大小。
  • rclone delete - 删除路径下的文件内容。
  • rclone purge - 删除路径及其所有文件内容。
  • rclone mkdir - 创建目录。
  • rclone rmdir - 删除目录。
  • rclone rmdirs - 删除指定灵境下的空目录。如果加上 --leave-root 参数,则不会删除根目录。
  • rclone check - 检查源和目的地址数据是否匹配。
  • rclone ls - 列出指定路径下的所有的文件以及文件大小和路径。
  • rclone lsl - 比上面多一个显示上传时间。
  • rclone lsd 列出指定路径下的目录
  • rclone lsf - 列出指定路径下的目录和文件

rclone参数

  • -n = --dry-run 测试运行,用来查看 rclone 在实际运行中会进行哪些操作。
  • -P = --progress 显示实时传输进度,500mS 刷新一次,否则默认 1 分钟刷新一次。
  • --cache-chunk-size SizeSuffi - 块的大小,默认 5M,理论上是越大上传速度越快,同时占用内存也越多。如果设置得太大,可能会导致进程中断。
  • --cache-chunk-total-size SizeSuffix 块可以在本地磁盘上占用的总大小,默认 10G。
  • --transfers=N 并行文件数,默认为 4。在比较小的内存的 VPS 上建议调小这个参数,比如 128M 的小鸡上使用建议设置为 1。
  • --config string - 指定配置文件路径,string 为配置文件路径。
  • --ignore-errors - 跳过错误。比如 OneDrive 在传了某些特殊文件后会提示 Failed to copy: failed to open source object: malwareDetected: Malware detected,这会导致后续的传输任务被终止掉,此时就可以加上这个参数跳过错误。但需要注意 RCLONE 的退出状态码不会为 0。

rclone日志

rclone 有 4 个级别的日志记录,ERROR,NOTICE,INFO 和 DEBUG。默认情况下,rclone 将生成 ERROR 和 NOTICE 级别消息。

  • -q - rclone 将仅生成 ERROR 消息。
  • -v - rclone 将生成 ERROR,NOTICE 和 INFO 消息,推荐此项。
  • -vv - rclone 将生成 ERROR,NOTICE,INFO 和 DEBUG 消息。
  • --log-level LEVEL - 标志控制日志级别。

 

输出日志到文件

使用 --log-file=FILE 选项,rclone 会将 Error,Info 和 Debug 消息以及标准错误重定向到 FILE,这里的 FILE 是你指定的日志文件路径。
另一种方法是使用系统的指向命令,比如:

rclone sync -v Onedrive:/DRIVEX Gdrive:/DRIVEX > "~/DRIVEX.log" 2>&1

文件过滤

  • --exclude - 排除文件或目录。
  • --include - 包含文件或目录。
  • --filter - 文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以 + 开头,排除规则以 - 开头。

文件类型过滤

比如 --exclude "*.bak"、--filter "- *.bak",排除所有 bak 文件。也可以写作。
比如 --include "*.{png,jpg}"、--filter "+ *.{png,jpg}",包含所有 png 和 jpg 文件,排除其他文件。
--delete-excluded 删除排除的文件。需配合过滤参数使用,否则无效。

目录过滤

目录过滤需要在目录名称后面加上 /,否则会被当做文件进行匹配。以 / 开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。

  • --exclude ".git/" 排除所有目录下的.git 目录。
  • --exclude "/.git/" 只排除根目录下的.git 目录。
  • --exclude "{Video,Software}/" 排除所有目录下的 Video 和 Software 目录。
  • --exclude "/{Video,Software}/" 只排除根目录下的 Video 和 Software 目录。
  • --include "/{Video,Software}/**" 仅包含根目录下的 Video 和 Software 目录的所有内容。

 

文件大小过滤

默认大小单位为 kBytes ,但可以使用 k ,M 或 G 后缀。

  • --min-size 过滤小于指定大小的文件。比如 --min-size 50 表示不会传输小于 50k 的文件。
  • --max-size 过滤大于指定大小的文件。比如 --max-size 1G 表示不会传输大于 1G 的文件。

 

环境变量

rclone 中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除 -- 前缀,更改 - 为 _,大写并添加前缀 RCLONE_。环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。
比如设置最小上传大小 --min-size 50,使用环境变量是 RCLONE_MIN_SIZE=50。当环境变量设置后,在命令行中使用 --min-size 100,那么此时环境变量的值就会被覆盖。

  • RCLONE_CONFIG - 自定义配置文件路径
  • RCLONE_CONFIG_PASS - 若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件。
  • RCLONE_RETRIES - 上传失败重试次数,默认 3 次
  • RCLONE_RETRIES_SLEEP - 上传失败重试等待时间,默认禁用,单位 s、m、h 分别代表秒、分钟、小时。
  • CLONE_TRANSFERS - 并行上传文件数。
  • RCLONE_CACHE_CHUNK_SIZE - 块的大小,默认 5M,理论上是越大上传速度越快,同时占用内存也越多。如果设置得太大,可能会导致进程中断。
  • RCLONE_CACHE_CHUNK_TOTAL_SIZE - 块可以在本地磁盘上占用的总大小,默认 10G。
  • RCLONE_IGNORE_ERRORS=true - 跳过错误。

 

Nginx 反向代理 Aria2 JSONRPC

给Aria2服务器所用的SSL证书往往不支持Aria2所使用的6800端口,而80/443端口还要提供HTTP服务,为此就需要用Nginx来实现同时提供HTTP和Aria2 JSONRPC服务了。

禁止外网直接访问Aria2 RPC

修改Aria2配置文件

#允许所有来源, web界面跨域权限需要
rpc-allow-origin-all=false
#允许非外部访问
rpc-listen-all=false
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800

修改你的站点的Nginx配置文件

#ARIA2
    location /jsonrpc {
        proxy_pass http://localhost:6800/jsonrpc;
        proxy_redirect off;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        #以下代码使支持WebSocket
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

其中 location /jsonrpc 表示设置好后RPC地址为 //example.com/jsonrpc

这样做还有一个好处,那就是不需要单独为Aria2 RPC服务器设置密码验证了。认证直接靠nginx完成,能见到webui就能连上ARIA2 RPC

说明
  • 推荐安装使用宝塔进行部署操作,傻瓜简便式。
  • 配合Cloudreve或者Onemanager管理下载文件,实现影音文件在线观看或下载。
  • 配合Cloudflare静态资源长时间缓存,减少回源Onedrive或Google网盘,食用效果更佳。
  • 内容整理自网络,感谢P3TERX提供优秀的脚本!
你已经把内容看完了
© 版权声明
1:本网站名称:源码库
2:本站永久网址:www.ymkuz.com
3:本站部分内容收集于互联网,如果有侵权内容、请联系我们删除,不妥之处,敬请谅解
4:本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
5:本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6:本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新
7.文章投稿-投诉建议E-mail:yunduanw@qq.com 站长QQ:99767152 官方QQ群:源码库交流群
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容