云端备份与自动同步
服务选择、同步数据范围、同步策略和自动同步开关会自动保存;同步间隔在离开输入框时保存。连接信息和加密密码在离开输入框时自动保存;清空字段也会保存。配置完整性在执行同步时检查。
在一个同步服务中选择 WebDAV 或 GitHub Secret Gist,定期备份共享数据,实现多设备同步与灾备。
功能亮点
- 一键备份/还原:在「导入导出」页面选择同步服务后,可随时上传或下载 JSON 备份。
- 自动同步:后台定时同步(默认 1 小时),根据策略自动合并或覆盖数据。
- 多策略支持:可选择“合并 / 仅上传 / 仅下载”,满足主次设备差异化需求。
- 冲突合并:合并模式下按更新时间保留较新的账号、书签与偏好;删除账号或书签时会记录删除标记,避免旧备份在下次同步后把它们重新带回。
- WebDAV 安全写入:上传备份时会先写入同目录临时文件,读回校验后再移动到正式备份文件,降低上传中断造成远端备份损坏的风险;若坚果云在目标文件已存在时对
MOVE返回 409,扩展会先删除正式备份再重试移动。 - GitHub Secret Gist:可使用 GitHub Token 连接已有 Secret Gist,或创建新的不公开列出的 Gist。Gist 上传始终使用加密备份。
前置条件
- 选择一种同步服务:WebDAV(如 Nextcloud、坚果云、Alist WebDAV 或 NAS),或 GitHub Secret Gist。
- WebDAV 需要具备读写权限的
URL / 用户名 / 密码;Gist 需要 GitHub Token 和备份加密密码。 - 若需自动同步,请允许浏览器在后台运行;浏览器关闭或设备休眠时,定时任务无法正常执行。
配置入口
- 打开扩展 → 导入导出 → 「云端同步」设置。
- 在「同步服务」中选择 WebDAV 或 GitHub Secret Gist。
- WebDAV 填写:
- 服务器地址:可指向目录或具体 JSON 文件;若填目录将自动在其下创建
all-api-hub-backup/all-api-hub-1-0.json。 - 用户名/密码:用于 Basic Auth。
- 服务器地址:可指向目录或具体 JSON 文件;若填目录将自动在其下创建
- 点击 “测试连接” 验证配置无误,随后可执行“上传备份”或“下载备份”。
GitHub Secret Gist
- 在 GitHub 创建一个 Personal Access Token。建议使用 fine-grained Token,并只授予 Gists: Read and write;classic Token 只需要
gistscope(参见 GitHub Gist API 权限说明)。Token 只保存在当前浏览器,不会进入备份。 - 选择 GitHub Secret Gist,填写 Token。已有 Gist 可填写其 ID 或
https://gist.github.com/...链接;首次使用可留空。 - 设置加密密码后点击 “上传到 Secret Gist”。ID 留空时,扩展会自动创建
public: false的不公开列出 Gist,在all-api-hub-backup.json中保存加密内容,并回填 ID。后续上传会更新同一个 Gist。 - 连接已有 Gist 时先点击 “测试连接”,确认它是可读取且含有非空备份文件的 Secret Gist。导入和同步时还会解密并校验备份格式;连接测试成功不代表内容一定可以导入。
Secret Gist 只是“不公开列出”的链接,不是访问控制或权限隔离。请同时保护 Token、加密密码和 Gist 链接;不要把 Token 写入备份或截图。GitHub Gist 的 Token、Gist ID/链接和加密密码不会进入手动 JSON 导出;迁移到新设备后需要重新配置 Gist。现有 WebDAV 用户的手动导出行为保持不变。
自动同步
在同一页面启用 “自动同步” 可后台定时同步当前选中的同步服务:
| 选项 | 说明 |
|---|---|
| 开启自动同步 | WebDAV 与 Gist 共用同一套设置,同一时间只有当前选中的服务会运行。关闭后仍可手动备份或立即同步。 |
| 同步间隔 | 以秒为单位,默认 3600 秒(1 小时);WebDAV 最短 60 秒,Gist 最短 300 秒(5 分钟)。 |
| 同步策略 | 合并、仅上传(以本地覆盖远程)、仅下载(以远程覆盖本地);立即同步也使用已保存的策略。 |
| 立即同步 | 立即执行一次同步;若正在同步会提示稍后再试。同步前会等待正在保存的更改完成。 |
调度流程
- 保存设置后,扩展会按当前服务更新后台定时任务。
- 执行同步时:
- 先调用当前同步服务的连接测试确认凭据有效。
- 下载远程备份。WebDAV 备份不存在时可按策略执行首次备份;Gist 的备份文件缺失或为空时,自动同步会停止,需要先手动上传初始化。
- 导出本地账号与偏好,依据策略决定最终数据:
- 合并:根据
updated_at/lastUpdated时间戳保留最新项;账号与书签的删除标记会随同步参与合并,防止已删除条目被旧远程副本恢复。账号冲突采用“整个账号最后写入者胜出”(whole-account LWW),不会逐字段合并,因此较新的账号会连同其签到配置一起替换较旧账号。 - 仅上传/下载:直接选取本地或远程数据。
- 合并:根据
- 合并或仅下载时,把相应结果写回本地;合并或仅上传时,把备份上传到当前同步服务。
- WebDAV 使用临时文件读回校验后替换正式文件;Gist 在写入前重新读取并比较版本,上传后再读回校验内容。
- 在设置页面查看同步成功或失败状态,以及最后执行时间。
版本兼容与多设备升级
当前版本写出的备份格式为 V4,并会把旧 V6 账号的签到配置升级为 V7。V1–V3 备份仍可导入;上一版 V3 读取器遇到 V4 时会尽力拒绝导入,避免按旧结构覆盖数据,但更早、对未知版本采取宽松解析的客户端不保证安全。
请先暂停自动同步,再把共享同一云端备份的设备全部升级到支持 V7 账号的版本,最后重新启用同步。不支持 V6 与 V7 客户端同时写入同一个备份;并发写入时,whole-account LWW 可能让旧客户端用 V6 账号覆盖 V7 签到配置。若必须回退旧版,请先停用其他设备的同步,并保留独立备份文件。
Gist 写入前发现远端版本变化时,会报告冲突并停止本轮上传,请稍后重新同步。这是尽力而为的版本检查,并非原子条件写入:另一台设备仍可能在检查完成后同时写入,因此应尽量错开多设备同步时间。
自动签到与多设备
账号和偏好设置可以随 WebDAV 或 Gist 同步,但自动签到的当天执行状态、最近结果和浏览器闹钟不会跨设备共享。多台设备同时开启每日计划时,仍可能重复签到;如需避免,建议只在一台设备上开启自动签到计划。
安全建议
- 建议在 WebDAV 端为备份目录单独创建子账号或访问令牌;GitHub Token 只授予 Gists 所需的最低权限。
- 勿在公共设备上保存 WebDAV 密码,必要时定期更换。
- WebDAV 同步失败提示 401/403 时,请检查凭据,并确认服务器支持 Basic Auth 及
MKCOL/PUT/GET/MOVE/DELETE方法。
常见问题
| 问题 | 处理方式 |
|---|---|
| WebDAV 测试连接失败 | 检查 URL 是否包含协议(https://),以及是否允许远程写入。 |
| 自动同步无反应 | 检查自动同步是否启用、服务配置是否完整,以及浏览器是否休眠;查看同步状态中的错误。 |
| 合并后出现重复账号或书签 | 手动删除重复项并重新上传;如需严格控制,请使用 “仅上传” 策略。已删除的账号和书签会通过删除标记参与后续合并,通常不会被旧备份重新恢复。 |
| 上传前提示远端备份损坏 | 表示现有 WebDAV 备份不是有效 JSON。确认本设备数据完整后,可以按提示用当前设备的全部共享数据重建远端备份;若本设备数据不完整,请先从数据完整的设备上传或导入完整备份。 |
| Gist 缺少备份文件或内容为空 | 自动同步和导入会停止,不会把缺失内容当成空备份清空本地数据。确认本设备数据完整后,可手动上传并确认覆盖,初始化现有 Secret Gist。 |
| Gist 内容损坏或格式不兼容 | 停止导入或同步。先检查 all-api-hub-backup.json 和加密密码,修复备份后重试;不要用不完整的本地数据覆盖远端。 |
| Gist 返回 401/403/404 或限流 | 401 检查 Token 是否过期;403 检查 Gists 权限;404 检查 Gist ID 或是否已删除;限流请等待提示时间后再试。 |
| 坚果云覆盖上传时出现 409 | 坚果云可能在正式备份文件已存在时对带 Overwrite: T 的 MOVE 返回 409。扩展会自动删除目标文件并重试移动,通常无需手动处理。 |
| JSON 文件过大 | 定期清理已失效账号,避免超出同步服务的大小限制。分批手动导出可用于独立归档,但自动同步仍上传所选数据的完整备份。 |
