本文梳理一下已发现的几种工具实现OneDrive(for business)的WebDAV服务,for business
也就是商业版OneDrive。15G的个人OneDrive账户利用能力有限且兼容性较差所以这里不作讨论,个人版挂载教程见2020年onedrive怎么配置webdav?。以下很多操作都有烂大街的教程,我在这里只是抛砖引玉综合整理一下,提供更多的思路。
一、OneDrive本身
1.1 实现方式
OneDrive本身不支持目前通行的WebDAV协议,但它自己确实有比较特殊的WebDAV服务,只是能支持它的软件很少。以我的office365 E5 OneDrive登录后根目录的链接为例:
https://chirmyram-my.sharepoint.com/personal/office_chirmyram_top/_layouts/15/onedrive.aspx
则其对应的WebDAV链接为:
https://chirmyram-my.sharepoint.com/personal/office_chirmyram_top/Documents/
观察其特点可发现,将末尾的 /_layouts/15/onedrive.aspx
替换为 /Documents/
就可以了。末尾 /Documents/ 即为 OneDrive 根目录,也可在其后继续添加子目录。
1.2 访问工具
1.2.1 rclone
rclone是一个支持多种云储存平台、国外云盘、储存协议的命令行工具,兼容OneDrive独特的WebDAV功能。挂载时使用WebDAV方式挂载,输入自己的WebDAV链接,选择链接类型为sharepoint,填写office365的账密,详细挂载教程可参考使用rclone转存别人分享的onedrive分享链接。两个网盘对拷不会占用本地储存空间,当然流量还是烧的自己的,而且是双倍流量,不过部分 VPS 商家不会计算进入VPS的入网流量。
在其他资源账户中,赋予域内另一空白账户对其资源文件夹的只可查看权限,即只读权限,使用 rclone 配置该空白账户及资源文件夹链接,自动加密账户密码,既可共享出来以供他人批量搬运资源,又能:限制操作权限、避免泄露密码、避免没有创建 API 权限的尴尬、不必担心 refresh token 过期。
1.2.2 davfs2
davfs2是Linux端的WebDAV挂载软件,也恰好支持挂载OneDrive的WebDAV链接。挂载教程参考:以WebDav方式挂载OneDrive、Linux/VPS使用davfs2挂载webdav网盘。
1.2.3 Windows资源管理器
这是微软自己最原始的支持方式,但还是无法直接访问WebDAV链接。使用资源管理器间接访问WebDAV链接,需要使用IE浏览器或兼容IE的浏览器,没错还要用到这种上古技术,比如Edge浏览器的IE模式、国内浏览器的兼容模式。登陆OneDrive后点击右上角切换视图,就会多出一个在文件资源管理器中进行查看选项,点击就会弹窗跳转到资源管理器中查看文件,访问一次后再次在资源管理器地址栏中粘贴WebDAV链接也可访问,不过清理缓存或重启电脑后会失效,又要从浏览器访问。
二、第三方工具
利用第三方工具实现WebDAV服务。
2.1 Koofr
本身是一家网盘服务商,默认2G空间,可以通过拉人头扩容至8G,当然也可以挂载其他网盘直接扩容。稍微调查了一下,官方在推特的账户发推多年,rclone挂载选项中也有Koofr(rclone作为久负盛名的云储存管理工具,不会支持不稳定的接口),不是突然冒出来的野鸡商家。每日限制上传流量1G,适合同步文档、配置等数据。如果跟坚果云对比的话,除了连接速度较慢,其他方面都是远超。限制挂载10个OneDrive账户,也支持在挂载的网盘间转移小文件。
注册登陆后,在左侧栏Connect选项中点击OneDrive图标进行挂载。挂载完毕后点击右上角头像,选择Places,即可对已挂载的网盘进行重命名、解绑操作。点击顶栏Preferences→Password→App passwords,生成WebDAV密码。WebDAV链接为https://app.koofr.net/dav
,账号为Koofr网盘账号邮箱,密码为上述步骤生成的密码。
2.2 Cloudreve
需要自行搭建,经典套娃盘。这是一个网盘程序而不是网页目录程序,具有作为网盘的基本功能,当然也可强行当目录程序,比如建立一个文件夹然后分享出去。读取OneDrive文件路径映射到Cloudreve的数据,每次操作文件都是读取自己的数据库来实现变动,所以必须经过它来操作OneDrive文件,否则在OneDrive里面单方面操作后不会同步至它的数据库,再在它里面操作会失败,除非手动修改数据库。
搭建好之后在WebDAV管理页面生成WebDAV密码,在支持挂载WebDAV的软件中使用此密码和网盘账户登陆,WebDAV链接为首页链接/dav
。
2.3 sharelist、alist
需要自行搭建。这俩本身为目录列表程序,初始作用是将文件公开展示在网页上,附带挂载OneDrive后转化为WebDAV服务,需要自行搭建。
这里列出的sharelist是旧版0.1版本,非最新版,通过WebDAV访问文件为只读权限,即无法修改只可查看。0.1版存在较多致命bug。如挂载账户超过1个所有账户的路径都会指向同一个,使用WebDAV播放视频时间一长就会导致整个网站变为所播放视频视频的直链,相当令人头痛,曾尝试搭建分站来解决问题,但同时运行多个进程也很不方便,迫于是当时发现唯一支持挂载网盘为 WebDAV 只读功能的程序,就一直用着,憋得慌。而新版目前仍在开发中,bug还是巨多,文档也不完善。在后台设置WebDAV路径,WebDAV链接为首页链接/路径
,0.1版无WebDAV账密。
而alist则稳定许多,同时稳定挂载多个盘,通过WebDAV访问文件拥有完整的读写权限,WebDAV访客账号拥有只读权限,适合公开分享。WebDAV链接为首页链接/dav
,账密在后台设置。
2.4 rclone
2.4.1 rclone本身
rclone不仅可以挂载第三方的WebDAV服务,还可以自己搭建WebDAV服务器(不仅可以搭建WebdAV,还可以搭建更多服务:dlna、docker、ftp、http、restic、sftp,见官方文档)。用rclone挂载OneDrive,我这里的OneDrive配置名为wd
,要挂载配置项的根目录为WebDAV服务,则rclone启动命令为:
rclone serve webdav --addr 0.0.0.0:端口 wd:/ --user 用户名 --pass 密码
中文部分自行替换更改。如果要挂载服务器本地路径,直接替换wd:/
即可,如本地root文件夹则改为/root
。现在就可以使用支持WebDAV的软件访问WebDAV链接:http://ip:端口
,也可以弄个nginx反代、挂上ssl证书。
浏览器本身并不支持WebDAV协议,除非相关项目本身专门适配WebDAV的前端,否则浏览器无法打开WebDAV链接。不过rclone的WebDAV服务是有前端页面的,可以直接在浏览器中登陆链接查看文件。
2.4.2 rclone套娃
利用rclone套娃也能曲线救援实现WebDAV,rclone可以将配置好的网盘挂载至本地磁盘,像是在本地那样读写文件(当然不能执行文件),这适用于那些不支持挂载OneDrive但支持挂载本地路径为WebDAV的网盘目录程序。诸如Nextcloud、Owncloud、Seafile、kodbox……数不胜数。显然挂载后操作文件会消耗双倍流量,每次操作后都是自动下载后修改再上传回OneDrive而不是直接在OneDrive修改。
Centos挂载到本地前需要先安装fuse:
yum install fuse
其他Linux系统自行变通。
以上文的配置wd
为例,将其根目录挂载至本地根目录的od
文件夹中:
rclone mount wd:/ /od/
访问/od
目录即可看到OneDrive里面的文件。若其他程序读取挂载目录时出现问题,可尝试以下参数比较详细的挂载命令:
rclone mount wd:/ /od/ --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
本文作者:七米蓝
本文标题:《让OneDrive实现WebDAV服务》
本文链接:https://www.chirmyram.top/archives/onedrivewebdav
版权声明:本博客文章均采用CC BY-NC-SA 4.0许可协议,转载请注明出处!
现在E5子账号的Webdav功能是被禁用了吗,我使用Fileball的Webdav连接,提示403forbidden
Fileball什么时候能访问onedrive独有的webdav了?目前只知道rclone、alist可以访问。
我还以为one drive的webdav是可以直接被挂在的……
路过,我服务器又续费了一年,继续写
谢谢分享,配合rclone+emby家里能继续在线看电影了
大佬好,我按照您的配置,用Rclone做了挂载,结果弹出这个提示,请问什么问题?我查了下资料,说是IPV6的问题,但是我用挂载其他盘又没有问题,请教,谢谢。
rclone serve webdav --addr https://al.chirmyram.com/dav/:443 /volume1/GDrive/al.chir --user alist --pass alist
2022/09/03 16:56:48 Failed to webdav: start server failed: listen tcp: address https://al.chirmyram.com/dav/:443: too many colons in address
rclone serve webdav的意思是将已配置好的配置项启动成webdav服务,你这是把我的alist webdav服务直接挂上去了,肯定不行。你必须先使用rclone config创建一个配置项,以webdav方式挂载填入我alist的配置。最后将你的创建的配置名搭建为webdav服务。
谢谢博主,我重新做了个配置。但是本来想参考您文中提到的详细挂载教程,可惜一直都进不去,网上查找的,似乎都没有看到怎么挂载别人共享的资源。我再琢磨下,您也看看,有没有好的教程推荐,谢谢。
没发现完整教程,这是触类旁通滚雪球串起来的。
谢谢大佬!!!!
路过顶顶顶
koofr好用!感谢站长分享@(玫瑰)
使用koofr在浏览器中输入账号和应用密码显示 “Method Not Allowed”
我在文章中也说过浏览器本身并不支持WebDAV协议除非项目本身适配了前端页面,就像ssh协议你觉得能用浏览器连接嘛。
位置来说需要设置https://app.koofr.net/dav/Koofr或https://app.koofr.net/dav/OneDrive
感谢大佬,我只有分开Koofr和Onedriver才能用,直接/dav报错~还有Onedriver改了名的小伙伴一定要改名字啊~我试了半天发现是自己改了名儿~~~
哈哈哈不错不错
感谢分享,收益颇多