WebDAV 备份与自动同步
通过 WebDAV 服务器定期备份账号与偏好设置,实现多设备共享、版本回滚与灾备。
功能亮点
- 一键备份/还原:在「导入导出」页面填写 WebDAV 凭据后,可随时上传或下载 JSON 备份。
- 自动同步:
webdavAutoSyncService支持后台定时同步(默认 1 小时),根据策略自动合并或覆盖数据。 - 多策略支持:可选择“合并 / 仅上传 / 仅下载”,满足主次设备差异化需求。
- 冲突合并:合并模式下按更新时间对账号与偏好进行去重,最大化保留新数据。
前置条件
- 准备可访问的 WebDAV 服务端:如 Nextcloud、坚果云、Alist WebDAV、NAS 等。
- 获取
URL / 用户名 / 密码,确保具备读写权限。 - 若需自动同步,建议让浏览器常驻后台(桌面 Chrome/Edge 或移动端 Kiwi)。
配置入口
- 打开扩展 → 导入导出 → 「WebDAV 设置」。
- 填写:
- 服务器地址:可指向目录或具体 JSON 文件;若填目录将自动在其下创建
all-api-hub-backup/all-api-hub-1-0.json。 - 用户名/密码:用于 Basic Auth。
- 服务器地址:可指向目录或具体 JSON 文件;若填目录将自动在其下创建
- 点击 “测试连接” 验证配置无误,随后可执行“上传备份”或“下载备份”。
自动同步
在同一页面启用 “自动同步” 可后台定时同步:
| 选项 | 说明 |
|---|---|
| 开启自动同步 | 对应 webdav.autoSync 开关,关闭后仅保留手动备份。 |
| 同步间隔 | 以秒为单位,默认 3600 秒(1 小时)。 |
| 同步策略 | merge(合并)、upload_only(以本地覆盖远程)、download_only(以远程覆盖本地)。 |
| 立即同步 | 触发 webdavAutoSync:syncNow,便于调试;若正在同步会提示稍后再试。 |
调度流程
- 用户保存设置后,
webdavAutoSyncService.setupAutoSync()会重新创建setInterval定时器。 - 执行同步时:
- 先调用
testWebdavConnection确认凭据有效。 - 下载远程备份(若不存在则视为首次备份)。
- 导出本地账号与偏好,依据策略决定最终数据:
- 合并:根据
updated_at/lastUpdated时间戳保留最新项。 - 仅上传/下载:直接选取本地或远程数据。
- 合并:根据
- 将合并结果写回本地(通过
accountStorage.importData+userPreferences.importPreferences)。 - 生成新的 JSON 并上传到
all-api-hub-backup/all-api-hub-1-0.json。
- 先调用
- 同步状态(成功/失败、最后执行时间)会通过
WEBDAV_AUTO_SYNC_UPDATE消息广播,可在前端监听或查看控制台日志。
安全建议
- 建议在 WebDAV 端为备份目录单独创建子账号或访问令牌。
- 勿在公共设备上保存 WebDAV 密码,必要时定期更换。
- 若同步失败提示 401/403,请确认服务器支持 Basic Auth 并允许
MKCOL/PUT/GET方法。
常见问题
| 问题 | 处理方式 |
|---|---|
| 测试连接失败 | 检查 URL 是否包含协议(https://),以及是否允许远程写入。 |
| 自动同步无反应 | 可能因浏览器被系统休眠或未启用自动同步;重新打开扩展并保存设置。 |
| 合并后出现重复账号 | 手动删除重复项并重新上传;如需严格控制,请使用 “仅上传” 策略。 |
| JSON 文件过大 | 建议定期清理已失效账号或分批导出,避免超出 WebDAV 限制。 |