使用edu邮箱注册的微软账号自带1TB云盘空间,我们可以利用rclone将它挂载到linux服务器,作为本地磁盘使用。
rclone内置访问onedrive的api,但是共用人数过多可能会被限速导致无法访问,所以考虑申请自己的api。
******2023.4.1 更新的重要说明******
由于rclone新版本会对网页获取到的token进行编码,导致token长度超出ssh的最大长度,出现如下报错:
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
Error: failed to configure OneDrive: empty token found
因此,本文的第一部分(申请onedrive api)不受影响,你仍可以按照本文操作。而第二部分(挂载onedrive网盘)已失效,请移步《rclone挂载onedrive失败(Couldn‘t decode response)》查看最新的挂载方法。
****************************************
目录
1. 申请onedrive api
2. 挂载onedrive网盘(已失效,挂载看这里)
前往Microsoft Azure管理界面,登录你的微软账号,打开“应用注册”服务。
点击“新注册”注册一个应用程序。
输入名称,勾选权限后注册应用。
注册成功后将跳转到管理页面,记下图中所示的“应用程序(客户端) ID”,供将来挂载使用。
此时点击“证书与密码”→“新客户端密码”,填写说明和截至期限后,添加密码。
添加密码后,我们记录密码值,供将来挂载使用。注意这里一定要将密码记录下来,因为它只显示一次。
接下来,点击“API权限”,为我们的api获取权限。Files中的权限全部勾选。
至此,我们已经申请好了onedrive的api,目前我们已经得到了客户端ID以及密码值。
以下步骤在linux服务器上进行。
在rclone官网文档查看你系统的安装方式,下面以ubuntu为例。
apt update
apt install curl
curl https://rclone.org/install.sh | sudo bash
安装成功后,命令行输入rclone config挂载onedrive网盘,输入“n”新建一个云盘,并输入名称。这个名称就是挂载后磁盘的名称,我起的是“onedrive”。
接下来,找到onedrive这一项,并输入前面的序号。随着rclone版本的更新,每一种网盘序号的顺序可能会改变,注意仔细辨别。
接下来,输入前面保存的客户端ID、密码以及网盘类型。此处注意区分你的网盘是什么类型,国内大多高校邮箱都是国际版(1),部分高校是世纪互联版(4)。
接下来不进行高级配置(n),也不进行自动配置(n)。
此时程序会要求输入token,由于我的服务器没有浏览器,所以需要在windows系统下获取。我们在官网下载页面下载windows系统下的rclone并解压,按win+R调出运行,输入“cmd”。
输入cd + 解压的文件夹路径,进入rclone文件夹下,再输入以下命令开始授权。
#ID和密码替换成你自己的
rclone.exe authorize "onedrive" "客户端ID" "密码"
此时,浏览器将会自动打开,我们为刚才创建的api授权。
接受后,页面会返回成功提示,同时命令行中会返回token。
我们将这个大括号填入服务器中(config_token>)。
配置完成后,我们选择类型为onedrive(1)。此时系统会读取网盘路径,我们输入y确认。
最终,程序还会列出主要信息让你再次确认:
此时,我们看到一个"onedrive"类型的、名为“onedrive”的网盘已经创建好,我们输入q退出程序,准备将这块网盘挂载到本地目录。
在linux终端中输入以下命令挂载网盘。挂载的命令为:
rclone mount 网盘名:网盘下的目录 即将挂载到的目录 --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
以我自己为例:
#创建即将挂载的目录
mkdir -p /home/onedrive
#将名为onedrive(刚才创建的)的网盘的目录(/)挂载在服务器的路径(/home/onedrive)
rclone mount onedrive:/ /home/onedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000
挂载成功后便会出现这样的提示:
此时服务器无法操作,我们也不能强行终止该程序。所以我们可以直接断开与服务器的连接,重新连接服务器。重新连接以后,可以看到网盘已经挂载成功!
谷歌网盘等各种盘的挂载方式大同小异,本质上都是通过api连接网盘,并将网盘挂载到本地目录。