Skip to content

WebDAV 同步

路径:阅读器标题栏 → 设置 → WebDAV 同步

设备 A、WebDAV 远端文件与设备 B 之间的合并同步流程

设备先读取本地、远端和上次基线,再按类别三方合并并使用 ETag 写回;普通记录、翻译缓存和离线 Topic 保持各自对象边界。

WebDAV 用一个小型 JSON 文件在多个浏览器之间交换普通本地记录。通知历史、互动历史和离线 Topic 使用独立对象,不挤占也不读取主 sync.json:两类历史各保存一份按站点账号隔离的可搜索记录清单;离线 Topic 使用轻量清单和每个 Topic 独立的 HTML。普通记录按成功同步基线执行三方合并;历史清单按记录单调累积,不把尚未回填到本机的旧消息误判为删除。所有写入都使用 ETag 条件请求,远端在同步期间变化时会重新读取并重试,不会把 412 冲突当成成功;主文件、账号 scope、类别或记录无墓碑却消失时按远端回滚处理,以本机副本安全重建。

WebDAV 同步内容中的离线 Topic 独立开关

凭据区未进入截图;离线 Topic 默认关闭,开启后才同步完整明文 HTML。

坚果云配置

在坚果云安全设置中创建第三方应用密码,然后填写:

字段坚果云示例说明
WebDAV 地址https://dav.jianguoyun.com/dav/必须使用 HTTPS,地址中不能嵌入用户名或密码
用户名坚果云账号邮箱不是昵称
应用密码单独创建的第三方应用密码不使用坚果云登录密码
远端文件ALR-Lite/v2/sync.json必须同时包含目录和文件名,目录缺失时自动创建

凭据只保存在 userscript 专属存储,不写入远端 JSON、设置导出、请求 URL 或显式业务请求头。已保存的应用密码不会回填到页面输入框;地址和用户名不变时留空保存会继续使用本机密码,切换地址或用户名时则必须填写新密码,避免把旧凭据带到另一目标。保存后先点“测试连接”,成功后再点“立即同步”。

配置字段与类型

字段类型与允许值校验结果
endpointHTTPS URL 字符串不允许内嵌账号、密码、查询参数或片段;路径会规范化为结尾带 /
username字符串执行连接时不能为空;只保存在本机凭据存储
password字符串执行连接时不能为空;页面不会回填已经保存的值
remotePath目录加文件名的相对路径字符串至少两段;空段、... 或超长路径段会拒绝
categories12 个固定键组成的布尔对象每个类别只有 true / false;至少启用一类
autoSyncEnabled布尔值默认 false
autoSyncIntervalMinutes153060180360其他值不会作为有效间隔;默认 60 分钟

远端主文件同样执行精确类型校验:format 和写入者为字符串,schemaVersion 为当前结构版本,时间戳必须是非负有限数值,删除标记必须是布尔值,活动记录必须携带 value。字段存在但类型不对时会停止同步,不会把损坏内容当成旧版本缺字段。

可选同步内容

十二类数据分别开关,关闭的类别不会上传、下载或删除:

类别同步内容明确不包含
浏览历史主题、最近阅读楼层、已读楼层和查看时间帖子正文
收藏记录收藏链接、标题和定位信息不替代或修改原站收藏
通知历史缓存可搜索的普通通知记录,按账号指纹写入独立清单私信、未读状态、原生通知 ID、原始接口响应
回复、Boost 与表情回应历史当前缓存中的三类可搜索记录,按账号指纹写入独立清单原始分页响应、请求游标、限流状态、普通收藏
设置配置Lite 外观、布局、性能和阅读交互设置WebDAV 凭据
阅读队列主题链接、固定状态和入口楼层帖子正文
阅读位置与窗口状态最近位置、讨论窗口锚点和全屏窗口几何页面 DOM
自定义适用站点用户添加的 HTTPS Discourse 站点登录会话
Connect 本机观察历史Connect 指标历史和服务器确认已读指纹Cookie 与接口响应正文
AI 服务集合共用 API URL、缓存模型目录、翻译业务选型及参数;API Key 使用 WebDAV 应用密码加密WebDAV 密码、未加密 API Key
已翻译 Section 缓存最近使用的译文 Section原文、页面 DOM
离线 Topic 下载(HTML 正文)下载历史、完整离线 HTML 与选择范围;清单和 HTML 分开存放图片和附件二进制、Cookie、页面缓存

普通帖子正文、图片、附件、原始分页响应、请求游标、短期限流状态和普通页面缓存不会进入 WebDAV;历史同步只读取已经存在的可搜索记录,不会为了 WebDAV 额外请求 Discourse。旧历史一般不变,因此清单按 identity 单调合并,同一记录只在内容较新时更新,不传播“本机暂时没缓存到”造成的删除。只有主动开启“离线 Topic 下载”时,完整 HTML 才会作为独立明文文件上传。默认只启用浏览历史、收藏记录和阅读队列;两类历史缓存、离线 Topic、翻译服务集合与译文缓存都必须分别主动开启。

十二类同步开关是当前设备的独立授权策略,不写入远端,也不会被另一台设备反向开启。要让两台设备交换“设置配置”,必须在两端都开启该类别、保存设置,再分别执行同步;若需要一次复制地址、远端路径、类别开关和定时策略,可使用设置导出/导入,用户名和密码仍需在每台设备本机确认。

1.3.0 之后的字段兼容

当前同步结构不仅保留 1.3.0 已有条目,也会合并后续仍有用户意义的字段:浏览历史中的分类、标签、精确楼层/滚动锚点和岁月史书状态;收藏与互动历史中的分类、标签和定位信息;AI 服务中的模型列表、模型能力目录、业务参数和动画;离线 Topic 清单中的归档状态。较新设备同步到较旧记录时,空占位不会抹掉另一端已经保存的有效分类、标签或阅读位置。

1.3.0 生成的离线 Topic v1 清单没有归档状态,1.5.0 会只把该缺失字段升级为“无存档状态”,完整 HTML 仍可导入;字段存在但类型错误时则拒绝,不能把损坏内容当成旧版迁移。主同步文件、十二类 payload、离线清单和加密 API Key 信封都使用精确字段与类型校验;加密盐、IV、迭代次数或密文结构被篡改时会在解密和本机应用前停止。

设置偏好按同一份远端快照联合校验,而不是把每个字段脱离兄弟字段单独判断。图片配置中的“共享三种形态”与浮窗/全屏/移动比例、性能预设与细项、回复树联动开关等组合会一起归一化;合法组合可以跨设备导入,字符串冒充数字、未知字段或内部不一致的组合仍会在写入和本机应用前拒绝。

与导入、重置和缓存清理的联动

  • 导出设置只保存 WebDAV 地址、远端路径、类别和定时策略,不保存用户名或密码。
  • 导入同一 WebDAV 地址时可以复用本机已有凭据;地址变化或凭据不完整时,定时同步会保持关闭,直到用户重新确认连接。
  • 恢复全部默认 会恢复 WebDAV 默认配置并清空本机用户名和密码,但不会主动删除远端文件。
  • 清理本机缓存不会生成远端删除标记;同步过的历史或收藏投影可能在下一轮从远端恢复。
  • 需要迁移设备时,先在旧设备执行一次成功的“立即同步”,再在新设备配置同一地址、账号、远端文件和类别并执行“立即同步”。

手动同步与首次同步

“立即同步”始终执行合并:

  1. 读取远端文件及 ETag。
  2. 比较本机记录、远端记录与上次成功同步基线。
  3. 普通类别合并新增、更新和删除标记;历史缓存按 identity 单调合并。
  4. 条件写入成功后,才把合并结果应用到本机并更新基线。

同步开始前还会核对所有已勾选类别是否都有当前运行时端口;只要一类不可用,整轮会在读取或写入远端前停止并列出类别,不会跳过后报告部分成功。当前 schema 不认识的未来类别会原样保留但不会执行,未知未来偏好则会停止设置类别同步,避免旧客户端把新数据误判为删除。

因此,在新浏览器中清空本地队列后再同步,只要远端仍保存队列记录,就会下载并显示;如果某台设备在一次成功同步后明确删除队列项,该删除会作为删除标记传播。通知和互动历史是缓存投影,清理本机缓存不会删除远端旧历史;本机后台回填或新消息出现后,下次同步只补充或更新对应记录。远端文件、scope、类别或单条记录直接消失不等于协议删除:只有 tombstone 才会反向删除另一设备的数据。认证失败、网络中断、解析失败或冲突重试耗尽时,本机现有记录不会被清空。

定时同步

定时同步默认关闭。启用后仅在页面可见时运行,启动后先等待 30 秒,再按所选间隔串行执行。可选间隔为 15 分钟、30 分钟、1 小时、3 小时和 6 小时;坚果云按请求计数,通常建议 1 小时。

切换设备后需要立刻看到变化时,直接使用“立即同步”,不必等待下一次定时任务。若旧配置的定时同步正在进行,保存新连接配置后触发的立即同步会等待旧事务收尾,再按新目标完整执行。多个标签页或设备同时同步时仍走同一 ETag 冲突处理,不会静默覆盖较新的远端文件。

故障判断

  • 401403:检查账号邮箱和第三方应用密码,不要改用登录密码。
  • 404:连接测试只验证 WebDAV 根地址和账号;首次同步或已同步主文件后来消失时,会抛弃该目标的旧主文件基线并用本机安全重建目录和文件,不会把 404 当成逐条删除。若创建仍失败,检查远端路径是否包含目录与文件名。
  • 412:远端在本轮同步期间被其他设备更新,阅读器会重新读取并重试;持续出现时稍后再同步。
  • 远端 WebDAV preferences 记录 … 身份不一致:先确认两端均使用当前版本再重试。当前版本会把同一远端快照中的联动偏好一起校验;仍报错表示对应字段类型或组合确实损坏,阅读器会保留本机设置且不会写回远端。
  • 新设备没有记录:确认两端连接到同一个地址、账号和远端文件,并且对应类别在两端都已开启。
  • 清空后记录消失:区分“只清了本地缓存”与“成功同步过删除”。前者可从远端恢复;后者会传播删除标记。
  • 翻译 API Key 解密失败:确认当前 WebDAV 应用密码与加密该配置时一致;阅读器不会把无法解密的 Key 当成空值覆盖远端。
  • 离线 Topic 恢复失败:确认两端都开启“离线 Topic 下载”,并检查远端 offline-topics 目录中的清单和对应 HTML 对象是否都存在;对象缺失或 SHA-256 不匹配时,阅读器会报错并保留本机副本。

修改远端路径相当于切换到另一份同步文件,不会自动迁移旧路径内容。本地同步基线按 WebDAV 服务地址、WebDAV 账号、远端文件和当前站点账号隔离;切换目标后的首次同步不会套用旧目标的删除判断。更换账号或路径前先在现有配置执行一次成功同步,并记录原路径以便回退。

非 LINUX DO 或其他适配社区的官方项目。站点数据与互动结果以原站为准。