rclone的折腾

起因

用过一些私人云盘(cloudreve、alist、nextcloud)。但是我同时还有RSS离线下载的需求。对于我来说,alist支持的超多云盘挂载无疑是我多网盘管理的最佳之选。但是离线下载功能就太蛋疼了。

2023_08_23:

昨天在NodeSeek上正巧看见有人吐槽alist的上传功能太辣鸡了,他在使用离线下载,内容下载到机器后上传总出错(在群里看有大佬的阿里云1G带宽机器上传一千个只出错几个,看来也许只是对小带宽机器不友好?不过我是没有那实力了哈哈),他就说转战cloudreve用同样的服务器做离线下载,上传环节没出过错。

我自己用西美1G带宽机器还是会经常出错


不仅对带宽要求这么高,还对网络质量要求这么高吗,还是说是onedrive的问题。

在这个帖子下面有人就说cloudreve限制太多(离线下载器只能使用aria2,支持的云存储太少之类的)。这点我也是深感体会。alist的超多云存储驱动支持太方便了,并且对于onedrive来说,cloudreve在导入云盘目录之后。通过非cloudreve操作onedrive它是获取不到变化的。alist的刷新令牌模式相较之下就好很多。

不过这也是两家的特色吧,cloudreve适合开私人小云盘盈利,不会直接操作存储器的场景。

alist的话更适合个人使用,但是如上所述,它的上传功能对于小机器来说实在是太难用了。

言归正传,评论有个人提到了rclone挂载云盘,这样的话上传失败率非常小(我目前没遇到过失败情况),并且支持的下载器也几乎等于支持所有(因为云盘挂载后在本地有目录)。我一想,确实是这样的。于是脑袋里
就有了一个想法:alist只做前端展示,离线下载功能就交给服务器内部使用rclone+qbit来完成吧。

开始实践

安装rclone

这一步跟着官网走,执行官方提供的脚本就好了。

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

但即便如此简单,我也遇到了问题:执行脚本的时候终端始终不执行,并且有报错提醒。期初我也很懵逼,寻思怎么一个curl命令还能有幺蛾子。后来翻译了报错才知道,这台服务器上的debian貌似是精简版的。没有sudo?我整一个蚌埠住了,我绷不住是应为我自己太傻逼了,也因为这个服务器厂商提供的垃圾系统。但奈何它便宜呀哈哈。在执行下面的命令安装好sudo后就没问题了

apt install sudo

使用rclone添加云盘

终端执行来配置、添加云盘

rclone config

image.png

根据提示按n回车开始添加,首先会让你输入配置名称,可以随便起。但最好是能让自己知道是哪个,我这里就叫test,之后按下回车进行下一步

image.png

到这个界面就是选择哪家云盘。有好多,找到自己要添加的输入前面的数字(注意这个数字有可能会发生变化,请根据实际情况输入)我这边要添加的是onedrive,对应的数字是31。
image.png
之后会要求输入azure应用的客户端id和客户端秘钥(这两步可以跳过,跳过的话就是使用rclone的应用,推荐还是自己去注册一个应用,听说自己注册的应用速度会更快
我这里演示就都不输入了
image.png
然后会让你选onedrive的账号地区,根据实际情况来选,我的是全球的,就选1
image.png
之后这一步直接默认即可
image.png
来到下图这一步就要注意了,如果是linux服务器的话请选n,windowd的话选y。选y会弹出浏览器让你登录微软账号,之后就会自动配置好。
选n的话会给你段命令,让你在windows机器上也下载一个rclone(同版本)。在windows机器上执行这段命令

image.png

因为我这里是linux服务器,我就选n。之后复制这段命令到windows机器上。来到rclone文件夹,按住shift鼠标右键,用powershell打开。输入./然后粘贴上这段文字
image.png

之后会弹出浏览器,登录账号后浏览器显示Success!我们回到powershell。将得到的这一段全部都复制到ssh终端里按回车
image.png

输入提交token后报错请看这里

报错看这里


如果这一步将得到的代码粘贴回车之后报错,或者之后的步骤有报错没成功,这里有个跟更简单暴力的方式:可以直接在windows机器上进行上面的所有步骤,再将windows上的配置文件直接复制到linux机器上也是可以的(可以直接复制整个文件,也可以打开文件将内容复制到服务器上)
windows配置文件位置:C:\Users{用户名}\AppData\Roaming\rclone\rclone.conf
linux配置文件位置:/root/.config/rclone/rclone.conf
linux配置文件可以使用

rclone config paths

命令查看,得到的结果中Config file就是了
image.png

替换完成后直接添加完成了,直接前往完成后执行进行检查

来查看添加的存储

之后会提示让你选择存储类型,我这里是onedrive for Business,就选第一个
image.png后面的全都直接回车就好了

完成后执行

rclone config

应该就能看到刚刚添加的存储了
image.png

挂载云盘到服务器

在挂载之前,先创建空文件夹用来作为挂载目录

mkdir /CloudStorage/AdminOnedrive

使用以下命令挂载:

rclone mount <云盘存储名称>:<要挂载云盘哪个路径>  <挂载到本地哪个目录> --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

举例:

rclone mount AdminOnedrive:/  /CloudStorage/AdminOnedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode full --cache-dir /256dataDisk/rcloneCacheAndTemp/Cache --transfers=10 --checkers=50 --vfs-cache-max-age 1h

意思是将云端存储名为AdminOnedrive的云盘的根目录挂载到本地的/CloudStorage/PanOnedrive目录下。
对比上面的命令,增加了一些参数。以下是几个我自己用的参数对照表:

参数名称 作用
--vfs-cache-mode 设置为full开启缓存
--cache-dir 设置缓存路径,可解决默认缓存路径为系统盘导致系统盘爆满,使用绝对路径
--transfers 同时传输数数量
--vfs-cache-max-age 1h 设置最大缓存时间
挂载可能出现的问题报错

提示
Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount3": executable file not found in $PATH

解决方法:

apt-get install fuse
apt-get install fuse3

挂载完成后使用下面的命令查看是否挂载成功

df -h

image.png

创建开机自启

1.首先进入到系统自己文件的文件夹里

cd  /etc/systemd/system

2.创建新的守护文件
touch {文件名}.service

例如:

touch rclone.service

3.编写守护文件:

vi rclone.service

修改下面代码中的ExecStart=。等于号后面替换成自己的命令。然后将下面的命令粘贴进去,输入法英文状态下按esc后按shift+: 输入wq 保存并退出

[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target

[Service]
Type=simple
ExecStart=rclone mount AdminOnedrive:/  /CloudStorage/AdminOnedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 --vfs-cache-mode full --cache-dir /256dataDisk/rcloneCacheAndTemp/Cache --transfers=10 --checkers=50 --vfs-cache-max-age 1h --vfs-cache-max-size 80G
ExecStop=fusermount -u LocalFolder
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF
开启开机自启
systemctl enable rclone
立即执行启动
systemctl startrclone
停止
systemctl enable rclone
重启
systemctl restart rclone

可以设置多个自启动挂载,使用文件名区分,分别设置

最后修改:2024 年 08 月 18 日