记录

让 OneDrive 实现 WebDAV 服务

日期:2022-12-10 
本文梳理一下已发现的几种工具实现 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

0
0
付款方式
×