🔁 WebDAV Sync:通用、稳健的 WebDAV 同步插件

期待v3版本的发布 :grinning:

我想我已经找到了一种更好的方式来支持 S3 或其他后端,同时将维护开销和插件冗余降至最低。因此,上面的投票可以结束了。

S3 同步功能终将以更明智的方式实现,而在新架构下,不需要 S3 的用户不会受到任何冗余体积的影响。

我正在考虑是否要简化或直接移除本插件中的 Smart Merge 功能。我们现已开启一项新的投票:

现状

  • 本插件目前会在数据库中为你的仓库里的每条 Markdown 笔记保存一份历史内容版本。
  • 该数据库的唯一用途就是支持 Smart Merge 冲突解决策略。
  • 需要解决冲突的情况非常罕见。只有当你在不同设备上同时编辑同一条笔记时才需要。除了 Smart Merge,本插件还支持其他策略,例如 Latest Survive
  • 然而,支持该功能的代价巨大:插件需要管理一个数据库,占用大量存储空间,并产生大量额外的文件 I/O,这可能会拖慢同步过程。

解决方案

  1. 完全移除 Smart Merge,这将极大地简化代码库。
  2. 使用 two way merge 替代 three way merge,这样可以消除对数据库的依赖,同样能大幅简化代码库。代价是合并结果的准确度会有所降低。
  3. 保持 Smart Merge 不变。

简化的优点

  • 减少存储空间占用
  • 更小的插件体积和更快的加载速度
  • 同步速度略有提升
  • 更好的可维护性

简化的缺点

  • 合并准确度降低(方案 2)或完全无法合并(方案 1)
  • 你可能需要容忍准确度较低的合并结果,或切换到 latest survive 策略(请记住,需要 Smart Merge 的场景非常罕见)
  • (Remove) 完全移除 “Smart Merge”
  • (Simplify) 使用 “two-way merge” 替代 “three-way merge”
  • (Keep) 保持 “Smart Merge” 不变
0 投票人

此投票也可在 GitHub 此处 参与。

“智能合并” 一直没明白原理,没使用过。
同步,我都是用"使用最新版本",应该会更安全的。

在 iOS 平台,每次打开才能触发同步有好也有坏,如果文档库里要同步的文档比较多的话,每次打开就会卡顿很久才能同步完成。
可以试试另一个软件:SynoSync,支持 WebDAV 在 iOS 后台同步到 Obsidian 文档库,更无感,更优雅~

WebDAV Sync插件已上线obsidian三方社区库,是大佬你的吧?
小白提问:使用此插件,电脑端和手机端均已同步到坚果云,但两者如何双向同步,请赐教 :pray: :pray:

是的,WebDAV Sync 现已上架 Obsidian 官方插件商店(请注意,目前有两款同名插件,请认准名称中 S 大写的 WebDAV Sync),同时也已入驻全新的 Obsidian 社区。对于目前仍在使用 BRAT 的用户,强烈建议您切换至官方商店进行安装和更新,以便获取更稳定的版本(切换方法很简单:只需卸载 BRAT,Obsidian 会自动识别该插件)。特此通知大家。

@qingfengbz 若要实现双向同步,请确保两台设备不仅连接了相同的同步服务(这一点您已经做到了),还指向了同一个远程目录。之后,插件便会自动检测并同步文件的新增、修改及删除操作。

你好老师,本人小白,在自己电脑安装Webdav后,插件调用同步报错是只有图片的上传报错,:
实际上在备份位置已经生成了文件,而再次备份时报错如下:


同样的,实际文件已备份,请问是我哪里设置错了吗?

@tanzi 截图中出现了两个异常:

  1. 上传失败:我之前也遇到过这个问题。插件在上传文件后,会立即获取并记录该文件的状态作为“上次同步状态”。对于大多数 WebDAV 服务器来说这没有问题,但部分服务器无法保证在返回上传响应时文件已完全写入,导致随后的状态获取因找不到文件而失败(即使刚刚上传成功)。这确实很令人头疼。

    修复这个问题比较困难,目前只能建议用户使用更可靠的、能保证 PUT 请求原子性的 WebDAV 服务器。彻底的修复可能要等到 v3 版本,届时我会尝试找到一种方法来完全跳过上传后的状态查询。

  2. 下载失败:我注意到有一个名为 http:/192.168.5.21:8099/Tanzi/Tanzi/欢迎.md 的文件正在被下载。这显然不对,因为这不是一个有效的 URL(http: 后面只有一个 /)。我推测您的文件夹结构中可能存在这样的路径链:http:192.168.5.21:8099TanziTanzi。我不确定这个错误的路径是您服务器上真实存在的,还是插件本身的 bug。如果下次再出现同样的下载问题,请从插件设置中导出支持日志,并通过私信发给我(点击我的头像 → “私信”)。

1 个赞

是的,后续我找到问题的根本所在了,把本地win的webdav服务关掉,切换为linux服务器上的webdav备份完美解决该问题,且URL使用也会更简单便捷,不会出现该类报错,感谢您的答复