30 lines
1.3 KiB
Markdown
30 lines
1.3 KiB
Markdown
# 本地备份与恢复模块
|
|
|
|
## 目的
|
|
|
|
在数据库加密、版本升级和更复杂功能接入前,先保证账本具备可验证、可回退的恢复能力。
|
|
|
|
## 备份流程
|
|
|
|
1. 使用 SQLite Online Backup API 获取一致性快照,不直接复制正在使用的数据库文件。
|
|
2. 对新备份执行 `PRAGMA integrity_check`。
|
|
3. 检查迁移表、流水表和导入表等必要结构。
|
|
4. 计算 SHA-256,并在同目录写入独立校验文件。
|
|
5. 将数据库文件同步到磁盘后才向界面报告成功。
|
|
|
|
备份位于应用数据目录下的 `backups` 子目录。当前版本暂不提供云端上传或外部介质复制。
|
|
|
|
## 恢复保护
|
|
|
|
- 只允许恢复备份目录内、文件名合法的 `.sqlite3` 文件。
|
|
- 恢复前重新核对 SHA-256 和数据库结构;不一致立即拒绝。
|
|
- 覆盖当前账本前,自动创建 `pre-restore` 安全快照。
|
|
- 使用 SQLite Online Backup API 写回当前账本。
|
|
- 恢复后自动执行数据库迁移;若恢复或迁移失败,尝试用安全快照回退。
|
|
|
|
## 当前边界
|
|
|
|
- 本地备份与主数据库在同一块磁盘,能防误操作,不能替代异地备份。
|
|
- 备份目前仍是未加密 SQLite 文件,不应复制到不可信位置。
|
|
- 下一阶段的数据加密迁移将依赖本模块提供回退保障。
|