04g WebDAV 远程同步流程

状态:✅ 已实现

1. 操作入口

方式

入口

CLI

certflow db-sync push/pull/status

自动

应用启动时(main.py::init_database_manager)可选自动同步

远程同步基于坚果云 WebDAV,将本地数据库备份到云端或从云端拉取。

2. 涉及配置

配置文件

关键字段

说明

config/sync.yaml

WebDAV 端点/远程路径

同步参数

.env

NUTSTORE_WEBDAV_USER / NUTSTORE_WEBDAV_TOKEN

认证

3. 涉及代码文件

文件

职责

CLI

cli/commands/db_sync.py

同步命令(push/pull/status)

Main

main.py::setup_webdav_config

从 .env 加载配置

Main

main.py::init_database_manager

初始化时可选 sync_from_webdav

Service

services/db_source_adapter.py

数据源适配(含 WebDAV)

4. 逐步流程

4.1 配置 WebDAV

.env 中填写:

NUTSTORE_WEBDAV_USER=your_email@example.com
NUTSTORE_WEBDAV_TOKEN=your_token

若未配置,start.sh 阶段0.8 会提示"WebDAV用户未配置(将跳过远程同步)"。

4.2 推送(backup)

certflow db-sync push

将本地数据库上传到坚果云 WebDAV 远程路径。

4.3 拉取(restore)

certflow db-sync pull

从云端下载数据库到本地(注意:会覆盖本地,建议先 db-backup)。

4.4 查看状态

certflow db-sync status

显示本地/远程数据库大小、最后同步时间。

4.5 启动自动同步

main.pyDatabaseManager.init_db(sync_from_webdav=...) 在启动时根据配置拉取远程数据库(若配置)。

5. 数据库备份(独立命令)

certflow db-backup --out ./backup/certflow_20260804.db

对应四库模型(A/B/C/D)中的主库 A。

6. 数据库重置

certflow db-reset --force                  # 清空重建
certflow db-reset --baseline <path> --force  # 从基线库重建

start.sh 阶段10 也基于此实现调试库 B 的重置。

7. 常见问题

  • 同步超时:检查网络/坚果云令牌是否过期

  • 跳过同步:未配置 NUTSTORE_WEBDAV_* 时自动跳过

  • 冲突:push/pull 不做三方合并,先 db-backup 再操作