# 本地备份与恢复模块 ## 目的 在数据库加密、版本升级和更复杂功能接入前,先保证账本具备可验证、可回退的恢复能力。 ## 备份流程 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 文件,不应复制到不可信位置。 - 下一阶段的数据加密迁移将依赖本模块提供回退保障。