Map Onedrive / OneDrive for Business(SharePoint) as a Drive in Linux

在Linux中使用Webdav原方式映射 OneDrive / OneDrive for Business(SharePoint) 为本地硬盘

平常我用 OneDrive For Bussiness 来同步工作文档,账号是大学的邮箱注册的 OneDrive,不过可惜的是只有1T空间,而且没有开API权限,所以是不能用Github上那些使用API开发的客户端。

因为这微软这坑爹的API权限,在Linux下我都是使用 gdrive 来同步的。而Windows下(自己的本),使用链接方式实现同步到两个盘会导致我的破工作电脑会卡(美帝良心E450),毕竟两个同步软件实时同步挺占CPU资源的。

之前看到VICER大佬发的Windows下映射网络驱动器的方式挂载OneDrive,突然想起来以前我就尝试过在使用Webdav方式挂载OneDrive,在Linux下挂载报错302,不过那时只有可怜的15G的个人版本OneDrive,后来就不了了之了。

在GG上搜寻了一下,发现了一个法国佬提供了一个使用webdav方式挂载OneDrive For Bussiness的思路

原来当时是缺少了Cookies,所以在linux下挂载不成功,通过观察,登录OneDrive确实像法国佬那样说的多rtFaFedAuth两个字段。

挂载OneDrive For Business

以下操作都是在Deepin下实践过的。首先要安装davfs2

# apt-get install davfs2

获取Cookies,先在浏览器中登录OneDrive For Business

登录获取 Cookie

然后是选择挂载路径,我打算把OneDrive挂载到/mnt/sharepoint下,修改/etc/davfs2/davfs2.conf,添加Header来挂载OneDrive,记得把XXXXXX,和YYYYYY替换一下

[/mnt/sharepoint/]
ask_auth 0
add_header Cookie rtFa=XXXXXX;FedAuth=YYYYYY

然后获取webdav路径。登录OneDrive For Business后会打开类似下面的首页

https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/_layouts/15/onedrive.aspx

把后面的_layouts/15/onedrive.aspx去掉,然后加上Documents,得到

https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/Documents

就是你的webdav路径。然后挂载咯

# mount.davfs -o rw "https://xxxxxxxcn-my.sharepoint.com/personal/rootmaster_xxxx_xxx_cn/Documents" /mnt/sharepoint检查挂载成果root@ryan-PC:/mnt/sharepoint

# ls
Attachments            Documents   xxxxxxWork     Share            WorkSpace
BookStore            Forms        lost+found     Study
'Brake @ xxxx.xxx.cn'   GNS3        Message     WebSiteFiles

挂载OneDrive个人版还是没有尝试成功说明
1.无需API,对于那些没有管理员的onedrive for business,那肯定是很爽的
2.cookies会过期,对于有api的建议使用rclone挂载。
3.不支持 docker/wsl,openvz 需要服务商开启 fuse 模块