在Centos上使用魔改rclone挂载世纪互联Onedrive网盘

说明

官方版本Rclone不支持挂载世纪互联版本的onedrive,大佬们修改并编译了支持世纪互联版本的Rclone,同时支持其他版本的储存方式。

本教程使用 魔改的Rclone 挂载世纪互联版本的Onedrive网盘

魔改版的rclone下载地址

注册Azure应用

地址:https://portal.azure.cn/,登录完成后按下列步骤进行:

  1. 左侧找到 Azure Active Directory点击
  2. 左侧找到 应用注册
  3. 上方找到 新注册点击
  4. 名字:onedrive(自取)
  5. 受支持的账户类型:任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户(第二个)
  6. 重定向URL: http://localhost:53682
  7. 点击注册 找到应用程序(客户端)ID 复制Client_ID并保存
  8. 左下方找到证书和密码点击
  9. 下方 客户端密码 - 新客户端密码
  10. 说明: onedrive
  11. 截止期限:默认 1年内
  12. 点击 添加, 客户端密码 复制client_secret保存
  13. 左侧找到 API 权限 点击
  14. 添加权限 - Microsoft Graph - 委托的权限 - Files (7)全部勾选
  15. 选择应用程序权限 在下方Files里选择 Files.Read.AllFiles.ReadWrite.All

回到界面如果会发现该权限处于未授权状态,我们需要全局管理员点击 代表XXXX授予管理员同意

1
2
3
4
5
6
7
Files.Read
Files.Read.All
Files.Read.Selected
Files.ReadWrite
Files.ReadWrite.All
Files.ReadWrite.AppFolder
Files.ReadWrite.Selected

申请access_token

由于vps上没有浏览器的客户端,不能申请access_token,所以需要借助window平台。

下载完window相应的客户端文件,在Rclone所在的文件夹内,打开CMD,执行命令(替换相应的IDSecret):

1
rclone authorize onedrive "应用程序(客户端) ID" "客户端密码值" --onedrive-is-21vianet-version=true

之后会跳转到浏览器,登录账号之后返回 Windows 命令行,会返回 token,复制保存下来,后面要用。

安装配置VPS端的Rclone

下载相应的版本,并上传解压到/url/bin目录,然后

1
2
chmod +x /usr/bin/rclone
rclone config

就进入了和官方版 rclone 一样的挂载程序,和国际版 onedrive 不同的是:

1
2
client_id填写应用程序(客户端) ID,client_secret填写客户端密码。is_21vianet_version填true,Edit advanced config 以及 Use auto config 都选 no
下一步粘贴上之前在 Windows 获取的 token({"access_token":"...","expriry":"..."}),继续按提示完成之后的步骤。

挂载

挂载为磁盘

1
2
3
4
5
6
#安装 fuse
yum install fuse
#创建挂载目录,目录叫什么都可以
mkdir /root/OneDrive
#挂载为磁盘,下面的DriveName、Folder、LocalFolder参数根据说明自行替换
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

DriveName为初始化配置填的nameFolderOneDrive里的文件夹,LocalFolderVPS上的本地文件夹。

如果挂载过程中出现NOTICE: One drive root 'test': poll-interval is not supported by this remote错误,可以无视该错误。

挂载成功后,输入df -h命令查看即可!

卸载磁盘

1
fusermount -qzu LocalFolder

开机自启(一种方式)

使用Systemctl守护进程,也只适用于CentOS 7Debian 8+Ubuntu 16+

1
2
3
#将后面修改成你上面手动运行命令中,除了rclone的全部参数
command="mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#以下是一整条命令,先修改DriveName:Folder和LocalFolder的值,再一起复制到SSH客户端运行
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
AssertPathIsDirectory=LocalFolder
After=network-online.target

[Service]
Type=simple
ExecStart=/usr/bin/rclone mount DriveName:Folder LocalFolder \
--umask 0000 \
--default-permissions \
--allow-non-empty \
--allow-other \
--buffer-size 32M \
--dir-cache-time 12h \
--vfs-read-chunk-size 64M \
--vfs-read-chunk-size-limit 1G
ExecStop=/bin/fusermount -u LocalFolder
Restart=on-abort
User=root

[Install]
WantedBy=default.target
EOF

开始启动:

1
systemctl start rclone

设置开机自启:

1
systemctl enable rclone

其他命令:
1
2
3
重启:systemctl restart rclone
停止:systemctl stop rclone
状态:systemctl status rclone

如果你想挂载多个网盘,那么将systemd配置文件的rclone.service改成rclone1.service即可,重启动什么的同样换成rclone1

其他玩法

在拥有国内较好的速度的世纪互联的Onedrive,还有其他的玩法,结合Aria2还有Telegram等,后面会慢慢补充。