系统维护
备份、完整性核验与恢复说明。备份只读源数据(数据库 + 原始规划文件),
产物一律落在受控目录 backups/,不进 Web 静态目录。
恢复是覆盖式危险操作,只在命令行执行,页面不提供按钮。
已有备份
0
按创建时间倒序,只增不减
备份占用
0 B
含各份的原始文件副本
最近一次备份
—
还没有备份过
备份目录
C:\Jacklee\PAIOS\backup\gplan
可放到别的盘,用环境变量覆盖
一键备份
把数据库文件与原始规划文件目录整份复制到备份目录下的时间戳文件夹, 并写出 backup_manifest.json 校验清单(逐条登记每个原始文件的 SHA-256、大小与导入时间)。备份过程不修改数据库中的任何记录, 也不改动原始文件字节。
命令行等价:
.venv\Scripts\python.exe -m flask --app app backup --zip
—— 页面与命令行走的是同一段代码(services/backup_service.py),
备出来的东西结构完全一致。
原始文件完整性核验
逐条重算原始文件的 SHA-256,与导入时登记的哈希比对(设计文档 3.1.3 / 8)。 核验只读,不会改动任何文件。
备份清单(0 份)
还没有备份过。建议在每次重要调整(导入新原始文件、发布版本)之前先备份一次。
恢复说明(命令行)
- 为什么恢复没有按钮:恢复会覆盖当前数据库与原始文件目录,属于 10 章定义的"危险操作"。让它留在命令行,是为了保证每一次覆盖都是有人在终端前明确敲下 --confirm 的结果。
- 恢复前会自动留退路:执行时会先把当前状态备份到 backups/before_restore_<时间戳>,万一恢复错了还能再恢复回来。
- 预检不写任何东西:上面「恢复预检」只读清单与目录大小,可以放心点。
- 数据库位置:C:\Jacklee\PAIOS\db\gplan\plandata.sqlite3;原始文件位置:C:\Jacklee\PAIOS\storage\gplan\storage\originals。