本文记录了挂载onedrive云盘的详细过程,包括申请api,获取token中遇到的问题以及解决方法。
rclone支持数十款网络热门云盘的挂载,将云盘挂载到本地后可以很方便的进行文件管理,比如复制到本地挂载目录即可上传到云盘,移出即可下载。
安装Rclone
Rclone的官网提供了各个系统的安装包,并且为Linux/macOS提供了一键安装脚本,安装起来十分方便。
一键脚本
官网依旧提供了测试版的一键安装脚本,以下为正式版的安装命令:
curl https://rclone.org/install.sh | sudo bash

配置文件
终端输入rclone config
进行配置
➜ ~ rclone config
Current remotes:
Name Type
==== ====
onedrive 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>
我由于已经创建过一个了,所以在顶端会显示已经创建的名称和厂商
键入n
以创建新的远程配置,并在name
中输入方便区分的名称
之后就可以选择要挂载的类型,现在一共有四十多种, Microsoft OneDrive
在27号所以键入27
(这个序号会随着rclone的更新而改变,所以要自己找到对应的序号)
...
27 / Microsoft OneDrive
\ "onedrive"
...
Storage> 27
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
client_id
和client_secret
可以使用rclone本身提供的api(直接回车),不过rclone官方的api由于大多数人使用,通常下载速度会受到限制,自己申请注册应用可以解决这一问题。
获取Onedrive的client_id和client_secret
进入Azure新注册一个应用
名称随意,第二项选择任何组织目中的账户和个人账户
,这个选项不一定会在第三个,也要看清楚选择
重定向URL选择Web,并且URL填http://localhost:53682/
,注册即可

进入到应用到中首页右侧概要下第一个应用程序(客户端) ID
便是client_id
,接下来获取client_secret
在左侧菜单栏证书与密码
页面中选择新建客户端密码
,说明随意,时间选择最长的24月
之后会出现刚刚新建的客户端密码,记录下值
(切记不是机密ID,并且此值只会显示一次),这便是client_secret
但还没有结束,在左侧菜单栏中选择API权限
,添加权限- Microsoft Graph-委托的权限,找到Files
相关的权限全钩上(或者根据自己的需要选择),之后关于获取api方面的事情全部结束
获取Token
填入client_id
和client_secret
后会需要选择onedrive地区,这个也很好分辨,onedrive管理页面url顶级域名为com即是Global
接下来第一个配置选择no
Edit advanced config?
y) Yes
n) No (default)
y/n> n
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n>
auto config选no的话会要求你在本机上安装rclone,根据他的流程来获取code并复制到shell中,我当初这里老是失败,我便用了另一种方法(获取code的方法在rclone官网上有详细的流程,由于我并没有使用,所以不在此赘述),在本机上配置好后使用scp将配置文件复制到服务器上。
另一个需要注意的点是只有onedrive需要这样获取token,Googledrive要更方便一点,选no后会提供一个链接,获取的code复制到shell中即可,以后可能会提到
如果是在电脑上重新走一遍上面的安装流程,在获取第二个配置项Use auto config?
选yes,rclone会完成大部分工作,本人只需登陆一下并授权即可

配置尾声
后面配置根据提示选择type,挂载目录就完成了
使用rclone config file
获取配置文件路径,并使用scp
复制到VPS上
注:vps上也需要有相对应的目录scp才能复制成功,只需也运行rclone config
,到client_id
和client_secret
那一步直接回车再退出即可
➜ ~ rclone config file
Configuration file is stored at:
/Users/bailu/.config/rclone/rclone.conf
➜ ~
挂载和常用命令
事先需要安装依赖fuse3
apt-get update && apt-get install -y fuse3
首先需要创建一个用于挂载的本地目录
mkdir /Onedrive
使用mount挂载为本地磁盘:
rclone mount Onedrive:/ /Onedrive --copy-links --allow-other --allow-non-empty --umask 000 --daemon
根据自己的情况修改mount后的参数,Onedrive:/
指的是本地配置文件中Onedrive的根目录,挂载到/Onedrive
下,挂载完成后使用df -h
即可查看到新挂载的云盘
move和sync
挂载完成后是无法让aria2直接下载到挂载的硬盘中的,会出现文件系统错误(17)
,只能先下载到服务器硬盘中再上传了。
rclone move
和sync
的唯一区别是,move
在移到云端后本地并不会留下原始文件,相当于剪切,而sync
则相当于复制,上传成功后在本地会留下原始文件,使用事例如下
rclone move /xxx/xxx Onedrive:/download/
在aria2中配置下载完成后运行sh脚本即可实现自动上传