From:https://pickstar.today/2023/01/vps%E4%BD%BF%E7%94%A8rclone%E6%8C%82%E8%BD%BDonedrive%E8%AF%A6%E7%BB%86%E8%AE%B0%E5%BD%95/
| 参数 | 说明 |
|---|---|
| –allow-other | 允许非当前rclone用户外其它用户进行访问 |
| –attr-timeout 5m | 文件属性缓存,(大小,修改时间等)的时间。如果VPS |
| –vfs-cache-mode full | 开启VFS文件缓存,可减少rclone与API交互,同时可提高文件读写效率 |
| –vfs-cache-max-age 24h | VFS文件缓存时间,这里设置24小时,如果文件很少更改,建议设置更长时间 |
| –vfs-cache-max-size 10G | VFS文件缓存上限大小,请根据服务器剩余磁盘自行调节 |
| –vfs-read-chunk-size-limit 100M | 分块读取大小,这里设置的是100M,可提高文件读的效率,比如1G的文件,大致分为10个块进行读取,但与此同时API请求次数也会增多 |
| –buffer-size 32M | 该参数为读取每个文件时的内存缓冲区大小,控制rclone上传和挂载的时候的内存占用,调低点可以防止内存占用过高而崩溃,但太低可能会影响部分文件的传输速度,请根据服务器内存大小自行设置 |
| –low-level-retries | 该参数为传输文件没速度的时候重试次数,没速度的时候,单个会自动睡眠10ms起,然后再重试,不行,再睡眠更长一段时间,再重试,这样可以稍微加快文件上传进度 |
| –transfers | 该参数控制最大同时传输任务数量,如果你cpu性能差,建议调低,但太低可能会影响多个文件同时传输的速度 |
| –daemon | 后台运行程序 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
rclone mount <配置的云盘名称>:<要挂载的云盘目录> <作为挂载点的本地目录> \ --umask 0000 \ --default-permissions \ --allow-non-empty \ --allow-other \ --attr-timeout 5m \ --transfers 4 \ --buffer-size 32M \ --low-level-retries 200 \ --vfs-read-chunk-size 32M \ --vfs-read-chunk-size-limit 128M \ --vfs-cache-mode full \ --vfs-cache-max-age 24h \ --vfs-cache-max-size 10G \ --daemon |
1. 创建 OneDrive API
1.1 获取 client_id
首先访问 Microsoft Azure 应用注册,登录账号后点击应用注册

点击左上角的新注册

如图所示进行配置,名称可以随便写,账户类型选择第三项

点击注册后可以看到你的应用的相关信息,复制好 应用程序 (客户端) ID ,这个就是 client_id

1.2 获取 client_secret
依次点击证书和密码,新客户端密码,在截止期限中将时间选择为最长(即两年)

然后就可以看见值和机密 ID,我们只需要记录下 值 就可以,这个就是 client_secret 。

1.3 添加 API 权限
依次点击 API 权限,添加权限,Microsoft Graph,在右边栏搜索并添加权限。
需要 Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access, User.Read 这几项

添加完成后应该是这样

1.4 添加身份验证
依次点击身份验证,添加平台,Web

在重定向 URI 中输入 http://localhost

至此,OneDrive API 创建完成
2. 添加 rclone 配置
注:由于 OneDrive 的授权 key 可能会很长导致 rclone 远程配置中无法接受 key,目前 rclone 没有解决这个问题,因此可能挂载过程中会出现问题,如果出现了下文描述的问题,请参考第三部分来解决。
2.1 安装 rclone
由于 vps 中没有桌面环境,无法独立完成配置,所以 vps 和本地电脑都要安装 rclone。
vps 中执行
| curl https://rclone.org/install.sh | sudo bash |
即可成功安装 本地电脑请点此下载 rclone 并解压
2.2 在 rclone 中配置 OneDrive
首先在 vps 中执行
| rclone config |
初始状态下什么配置都没有,点击 n 创建一个新配置

接着会让你填写一个名称,这个随意填,例如 odrive
然后会要求选择要挂载的网盘,找到 Microsoft OneDrive 并输入其前面的序号
接下来会要求输入 client_id 和 client_secret ,将第一步中获取的值依次输入。
地区按照你的账号选择,比如我的就是普通的全球账户,就选择 1

接下来会让你选择你是否有桌面环境,因为 vps 环境下没有桌面环境,因此选择 N 。
输入后会看到一段提示,将红框内这段命令复制到本地的电脑执行。

现在在本地打开命令行,进入到 rclone 所在的文件夹内,粘贴上面的命令并执行
不出意外的话,会弹出浏览器窗口让你登录并授权,按要求操作即可。
操作完成后,会看到成功的提示

此时回到本地的命令行查看,会发现出现了一段授权 code,复制这段 code 并粘贴回 vps。
如果遇到类似下图的错误:
| Couldn‘t decode response – try again (make sure you are using a matching version of rclone on both sides: invalid character ‘e’ looking for beginning of value |

则按照第三节的处理。
接下来会选择使用哪种类型的账户,我使用的是 OneDrive,故选择 1

选择 drive

结束!请看第四节挂载。
3. 挂载失败的解决方法
其实解决这个问题我们要使用的就是最简单粗暴的方式,没错:在本地配置好,把配置文件复制过去!
打开本地命令行并进入 rclone 目录下,按照类似于第二节的方式重新配置,只不过这次选择是否有桌面环境时选择 Y ,这样子登录账户授权后就会直接成功,不会出现之前的问题了。
在本地成功添加配置后,在本地 rclone 目录下和远程 vps 分别执行
| rclone config file |
这个获取到的是 rclone 配置文件的目录。现在,直接把本地配置完成的配置文件复制到 vps 上去!
放心,这个配置文件在 vps 上也是能直接用的,复制完成后,在 vps 上执行
| rclone config |
嗯,能看到你在本地添加的 OneDrive 配置就是没问题了。
4. 挂载到 vps
首先新建一个文件夹用于挂载:
| mkdir /onedrive |
开始挂载:
| rclone mount odrive: /onedrive —allow-other —allow-non-empty –vfs-cache-mode writes –daemon |
其中 odrive 是 rclone 配置时输入的配置名称,/onedrive 是挂载目录,–daemon 是指后台运行。
此时可能会报错:
| Fatal error: mount not ready |
这是因为缺少依赖,我们选择安装
centos 系使用:
| yum install -y fuse3 |
debian 系使用:
| apt install -y fuse3 |
再次执行挂载命令,如果没有报错,就是挂载成功了。
检查挂载:
| df -h |
应该看到(我这里是用挂载名 song,挂载目录 /music 进行的测试截图):

接下来可以进行一些测试,如果能正常读写文件,证明挂载没有问题。
