数据库远程同步功能¶
概述¶
db-sync 命令提供了通过 WebDAV 协议与坚果云(或其他兼容 WebDAV 的云存储服务)同步 CertFlow 数据库文件的能力。该功能支持本地数据库推送到远程、从远程拉取到本地,以及查看远程同步状态。
安装要求¶
新增依赖:
requests>=2.28
安装更新:
pip install -e .
配置¶
在 config.yaml 中添加以下配置:
sync:
webdav:
url: "https://dav.jianguoyun.com/dav/"
username: "your@email.com"
password: "your_app_password" # 坚果云需使用第三方应用密码
remote_path: "/CertFlow/certflow.db"
配置说明¶
配置项 |
说明 |
|---|---|
|
WebDAV 服务地址(必填) |
|
用户名/邮箱 |
|
密码(坚果云需要第三方应用密码) |
|
远程存储路径,默认为 |
获取坚果云配置¶
登录坚果云官网
进入「账户信息」→「安全选项」
添加应用,生成第三方应用密码
WebDAV 地址为:
https://dav.jianguoyun.com/dav/
使用方法¶
命令格式¶
certflow db-sync [ACTION] [OPTIONS]
可用操作¶
操作 |
说明 |
|---|---|
|
查看本地和远程数据库的状态信息 |
|
将本地数据库推送到远程(推送前自动备份本地) |
|
从远程拉取数据库到本地(拉取前自动备份本地) |
选项¶
选项 |
说明 |
|---|---|
|
跳过确认提示,直接执行操作 |
使用示例¶
查看状态¶
certflow db-sync status
输出示例:
📁 本地: /path/to/certflow.db
大小: 2.35 MB
🌐 远程: https://dav.jianguoyun.com/dav//CertFlow/certflow.db
状态: 已存在
推送到远程¶
# 交互式确认
certflow db-sync push
# 跳过确认
certflow db-sync push -y
执行过程:
自动创建本地备份(命名格式:
certflow.backup_pre_push_20240101_120000.db)将当前数据库上传到远程
显示上传结果
从远程拉取¶
# 交互式确认
certflow db-sync pull
# 跳过确认
certflow db-sync pull -y
执行过程:
如果本地数据库存在,自动创建备份
从远程下载数据库文件
覆盖本地数据库
显示下载结果
安全特性¶
自动备份¶
在执行 push 和 pull 操作前,系统会自动备份当前的本地数据库:
备份文件命名格式:
{原文件名}.backup_{标签}_{时间戳}.db标签:
pre_push或pre_pull时间戳:
YYYYMMDD_HHMMSS
示例:certflow.backup_pre_push_20240115_143022.db
确认提示¶
默认情况下,push 和 pull 操作会显示确认提示,防止误操作。使用 -y 或 --yes 选项可以跳过确认。
错误处理¶
错误情况 |
处理方式 |
|---|---|
未配置 |
提示配置缺失,退出命令 |
本地数据库不存在(push) |
提示错误,退出操作 |
远程文件不存在(pull) |
提示错误,退出操作 |
网络连接失败 |
显示警告信息,继续执行 |
HTTP 请求失败 |
显示状态码和错误信息 |
注意事项¶
网络要求:需要能够访问配置的 WebDAV 服务器
权限要求:确保本地数据库目录有读写权限
并发问题:同步操作不支持并发,请避免同时执行多个同步命令
数据安全:建议在同步前确认当前数据库状态,避免意外的覆盖操作
密码安全:坚果云需要使用第三方应用密码,而非登录密码
应用场景¶
场景一:多设备数据同步¶
在多台电脑上使用 CertFlow 时,可以通过坚果云保持数据库同步:
# 设备 A:下班前推送
certflow db-sync push
# 设备 B:上班前拉取
certflow db-sync pull
场景二:数据备份¶
定期将数据库推送到云存储,实现自动备份:
# 可配合 cron 或计划任务使用
certflow db-sync push -y
场景三:环境迁移¶
将数据从一台机器迁移到另一台:
# 源机器:推送
certflow db-sync push -y
# 目标机器:拉取
certflow db-sync pull -y
故障排查¶
问题:连接失败¶
检查网络连接
确认 WebDAV 地址正确
验证用户名和密码
问题:认证失败(坚果云)¶
确认使用的是第三方应用密码,而非登录密码
重新生成应用密码并更新配置
问题:远程文件不存在¶
首先执行
push操作上传文件检查
remote_path配置是否正确
问题:权限被拒绝¶
检查本地数据库目录的写入权限
确认 WebDAV 服务器有写入权限
相关命令¶
certflow db-backup- 本地数据库备份certflow check-consistency- 数据库一致性检查certflow clean-duplicates- 清理重复数据
版本历史¶
新增于:2024
依赖要求:requests >= 2.28