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

请注意,本文编写于 342 天前,最后修改于 24 天前,其中某些信息可能已经过时。

前言

Aria2 有一个配置项on-download-complete,在下载完后执行一个脚本。当下载完成后 Aria2 会给脚本传递3个变量 $1$2$3 分别为 gid 、文件数量、文件路径。利用这个配置项和这些变量就可以实现很多功能,比如下载完成后调用 Rclone 进行上传操作。整个过程简单来说就是,Aria2 下载文件到 VPS ,完成后告诉 Rclone 将这个文件上传到网盘。理论上只要是 Rclone 支持的网盘,都可以按照这个思路来实现离线下载。

如果你还没有合适的 VPS,推荐去看《便宜高性价比 VPS 推荐》。其中 OneVPS 拥有无限流量的,非常适合用来离线下载,最低月付仅4美元,使用优惠码ONEVPS还可以打9折。

安装 Aria2

这里使用 Aria2 一键安装管理脚本,执行下面的代码下载并运行脚本,出现脚本操作菜单输入 1 开始安装。

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

安装和配置 Rclone

官方提供了一键安装脚本

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

安装完后,输入 rclone config 命令进入交互式配置选项,按照提示一步一步来进行操作即可。如果你一脸懵逼,可以去看《Rclone 安装配置教程》来了解配置的详细过程。

配置自动上传脚本

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

  1. 输入nano /root/.aria2/autoupload.sh打开自动上传脚本进行编辑,脚本中有中文注释,按照自己的实际情况进行修改,一般只需要修改下面2个部分。
name='Onedrive' #配置Rclone时的name
folder='/DRIVEX/Download' #网盘里的文件夹,留空为网盘根目录。
如果你对 nano 编辑器不熟悉,可以去看《Linux 下适合新手的文本编辑器 nano 使用教程
  1. 输入nano /root/.aria2/aria2.conf打开 Aria2 配置文件进行修改。或使用Aria2 一键安装管理脚本中的手动修改选项打开配置文件进行修改。找到“下载完成后执行的命令”,修改成下面的这样。
# 下载完成后执行的命令
# 删除.aria2文件
#on-download-complete=/root/.aria2/delete.aria2.sh
# 调用 rclone 上传(move)到网盘
on-download-complete=/root/.aria2/autoupload.sh
  • on-download-complete=/root/.aria2/delete.aria2.sh前加上#
  • 去掉#on-download-complete=/root/.aria2/autoupload.sh前面的#
  1. 重启 Aria2
service aria2 restart

使用

当你进行完以上所有操作,现在下载文件就会自动上传至相应的网盘。

由于 Aria2 是命令行后端软件,需要配合前端GUI才能有更好的使用体验,对于从来没有接触过的萌新,建议去看《Aria2 前端面板(GUI) AriaNg 使用教程》来了解相关基础知识。

配合第三方百度网盘工具,还可以实现百度网盘转存其他网盘这样的骚操作,方法参见《百度网盘转存到 OneDrive 、Google Drive 等其他网盘》。

了解更多 Aria2 使用技巧点这里

遇到问题如何解决

严格按照教程来进行操作几乎不会遇到问题。遇到问题先看 FAQ 再提问,这会为大家都省下很多宝贵的时间。你还可以加入TG群和小伙伴们一起讨论。要注意提问的方式和提供有用的信息,不然谁也帮不了你。提问前最好去了解《提问的智慧》,这能更好的帮助你去解决问题和节约时间。


欢迎随手订阅博客的 Telegram 频道,接收最新的文章推送和有趣的内容。你还可以加入博主的 Telegram 群组,和小伙伴们一同交流、学习、成♂长。

添加新评论

已有 75 条评论

你好,使用您的脚本可以安装,但是启动不了/etc/init.d/aria2: line 64: 13894 Illegal instruction nohup aria2c -c "${CONFIG}" >> "${LOG}" 2>&1
[错误] Aria2 启动失败 !出现这个提示,我用的是斐讯N1刷的Armbian5.77,自己编译的可以运行,但是功能不全,

我这个安装脚本只推荐在 x86 平台上用,自己编译替换/usr/bin/aria2c即可。不知道你指的功能不全是什么意思。

yyfs yyfs 回复 @P3TERX
0 0

自己编译的启用功能只有BitTorrent和Message Digest,其他的都没有,谢谢解答,

yyfs yyfs 回复 @P3TERX
0 0

自己编译的,功能只有这些

缺少依赖

yyfs yyfs 回复 @P3TERX
0 0

哦哦,能说说怎么安装依赖吗?谢谢

https://github.com/aria2/aria2#how-to-build
官方 GitHub 页面有说明。
你其实可以不用编译,直接apt install -y aria2就能用了。

yyfs yyfs 回复 @P3TERX
0 0

感谢回复,直接apt安装的话版本是1.30.0,感觉版本有点老了,谢谢

yyfs yyfs 回复 @P3TERX
0 0

按照你给的网址把依赖安装完又编译了一次,功能全有了,非常感谢

文件一直上传,文件本身大小1.9个G,上传了3.6个G还是继续上传,如果不手动结束这个进程就一直在后台台上传,网盘也找不到上传的文件。

这说明上传受限了。等一段时间,或者换个网盘账号。

大佬,冒昧的问个小白问题,说起来惭愧,我薅的谷歌云+Aria2 + Rclone到google drive,我搭建的是台湾地区实例,只用于离线下载,没有搭建酸酸乳,听人说谷歌云的入站流量免费,出站到谷歌产品的流量也是免费,但是却产生了流量的费用,由于脑容量不太够,不太懂太深的技术知识,大佬能否解我疑惑。万分感谢!!!

P3TERX P3TERX 回复 @幕落散场
0 0

如果是 BT 下载,你下载的同时会给其它在下同样资源的人上传,所以会产生收费流量。

谢谢大佬分享,发现一个问题,我百度云下载文件夹(文件夹里大概3-9个文件)的时候呢,发现部分文件不会被上传,这锅是我背吗(看了下脚本,感觉是 $2 这个参数没传好,或者 aria2 下载过快导致比较慢下载完成的文件不会触发脚本?

本菜鸡也水了篇博客,此中详细说明了解决方式,希望让这个配置更完美些~

这个问题在最初我写这些脚本的时遇到过,很多网友也反馈过。解决这个问题的核心是save-session-interval=1force-save=true这两项参数。如果你不是用的我提供的配置文件,那问题应该是出现在这里。如果你是完全用的我提供的整套方案,是不会有这个问题的。

看了你写的文章,需要指出的错误是,每一次脚本触发都是单独的进程,比如百度云的文件下载,一个文件下载完就触发一次上传脚本,所以不存在参数被覆盖一说,还有这不叫参数,叫变量。文件没被上传无非是脚本触发错误(没有触发或路径判断错误)或者上传受限(本地进程自行终结或服务端拒绝上传),这些从日志中能直观的看出来。

其实你写的这些都是我以前尝试过的,但任务开始传递变量会导致路径为空,没有开启强制保存(不会生成.aria2文件)会导致任务丢失,这都是以前遇到过的坑。

Justf Justf 回复 @P3TERX
0 0

谢谢大佬指点,明白了

请教下大佬,我修改了这一行里面的文件夹改为了Download
folder='/Download' #网盘里的文件夹,留空为整个网盘
但发现通过Aria2导出115的文件夹下载会被自动上传到“/Download/new folder/115上的文件夹名字”
想请问下如何避免被添加到new folder 这个文件夹呢

如果是前端传递的路径,脚本没办法去控制,你只能通过前端去解决。

tyhunter tyhunter 回复 @P3TERX
0 0

刚尝试了一下解决了,原来是我路径多加了“/”
现在用这个路径:
folder='Download'
就不会被自动创建并归类到new folder 这个文件夹里了

这... 好吧。感谢你分享使用经验。

大佬,我参考了您给的链接文章,试着配置了一下,重新挂载了另外两个备用google drive,但是尝试同步或拷贝命令,却只能是同步/拷贝了文件夹,文件文法同步/拷贝,代码如下,能指出我哪里错了吗,实在无奈。下面的“googledrive”是主要离线下载的网盘。另外两个是新配置的。

幕落散场 幕落散场 回复 @幕落散场
0 0

小白没基础真是致命,折腾了一天,才发现网盘对拷出现404的原因竟然是rclone的版本BUG,1.47版本升级最新1.48,可以正常对拷。

P3TERX P3TERX 回复 @幕落散场
0 0

都是从小白过来的,折腾才能学到更多东西。

大佬,想请教个问题。
但是一直有个疑问,根据你的教程我配置好了,但是只能是理想下载到指定的一个google drive,如果本人有多个google drive ,想实现的功能是下载完成后的文件同时备份到另外的一个谷歌网盘,设置可以设置多个同时备份,因为这样的话,如果教育网盘其中一个翻车的话,其他网盘都有备份。
以上的功能能怎样实现,烦请大佬解惑。感谢了。

P3TERX P3TERX 回复 @幕落散场
0 0

可以用 Rclone 进行网盘对烤,具体操作参考这篇。重要数据最好本地保存。

为啥抑制评论不上!!!
很感谢大佬分析的教程,安装成功,上传暂时也没有问题,但本人有几个onedrive,想实现aria2下载到不同的目录,文件通过rclone上传到不同网盘。
比如:
aira2下载到/home/A,自动上传到A网盘;
aira2下载到/home/B,自动上传到B网盘;
我根据您的上传代码修改了一下,发现用不了,小白一枚,所以能不能帮忙修改下代码,谢谢

P3TERX P3TERX 回复 @灭尽龙
0 0

想法不错,等有空

按照教程 输入nano /root/.aria2/aria2.conf打开 Aria2 配置文件进行修改。输入nano /root/.aria2/aria2.conf打开配置文件显示

RPC相关设置

的内容

没有文中的下载完后执行程序

不知道是哪里错了

往下翻

问下大佬,如果我用 Rclone 绑定两个网盘,然后在两个网盘间互拷,这个互拷的过程是消耗VPS的流量吗

P3TERX P3TERX 回复 @小老弟
0 0

是的

不知道为什么,按照博主的方法弄好以后是一切都是没问题的,但是只要在vps装了shadowsocks的服务端后,airaNg就连不上aria2了,但是vps上查看aria2又是运行的。

有些 shadowsocks 一键脚本可能会修改防火墙,会屏蔽一些无关的端口,就比如aria2的6800端口。你可以尝试把 aria2 重装。

HI ~
今日正好重新安裝杜甫
莫名又可以自動上傳了,我會再多多注意!
感謝您~~

安装好之后不会自动上传,应该是上传脚本没有触发,安装了好多次都是不能上传,请问怎么办?

wang wang 回复 @wang
0 0

现在可以上传了,但是aria2不能下载磁力链接里的文件,显示发生错误fallocate failed.cause:Operation not supported

修改 Aria2 配置文件第40行
file-allocation=none

HI,我又回来了
Rclone执行上似乎有一些问题,不知道怎么了
我使用SSH直接执行rclone move 是正常的

日誌截圖
https://images2.imgbox.com/96/19/fcK42OKQ_o.png

rclone 的问题,找不到配置文件,重新安装 rclone 看能不能解决。
如果没有解决,在终端输入rclone config file获取一下配置文件路径。
在脚本中rclone move后面加上--config 配置文件路径这个选项。

貌似有bug,上传脚本不支持文件路径大写!

怎么可能不支持大写。脚本中默认的路径是我日常使用的,就包含大写。

ssd ssd 回复 @P3TERX
0 0

可能系统问题吧,我这边测试的,路径有大写字母时,上传就会报错。改为小写就正常。

什么系统,有空我测试一下

自动上传如何设置限速啊,上次速度太快都封了

您好 我就算comment上了autoupload.sh, 下载到本地的文件还是会被删除,并且网盘上没有上传成功 求解啊。。 而且我就算更改了下载的位置 文件还是没有。。

你到底是要保留在本地还是需要上传?

要下载到本地,安装完Aria2默认什么都不做就行了。

要上传到网盘按照教程做就行了。

本地和网盘都要,参考FAQ中的方法。

本地文件被删除只有两种情况:一是已经上传(rclone删除的文件),二是下载出错或手动取消下载(删除脚本触发删除文件)

还有本地下载时不要把配置文件中on-download-complete=/root/.aria2/delete.aria2.sh这项注释掉了,否则下载完文件会直接被删除。

用速盘的远程aria2下文件会上传,下文件夹,里面的东西不会上传

测了几遍,没这问题啊

今天我更新了一下脚本,下种子时上传了一堆乱七八糟的文件

已修复,上次更新不小心加了个bug。

我用move为什么我的磁盘还是爆满了呢?

下载的文件大小不要超过磁盘容量大小

  1. 1
  2. 2