feat: 系统数据备份导出/导入后端——sqlite 在线快照 + apk 打包导出;上传校验预览→应用(自动快照当前库)+ 重启生效
导出:sqlite3 在线备份 API 对 data/users.db 做一致快照 → zip(users.db + manifest.json:schema_version/逐表行数/apk 清单)+ 可选 data/apks/*.apk。 导出文件读入内存(BytesIO)发送后即删磁盘副本,避免 Windows 流式句柄锁残留。 导入:上传 zip/db → 暂存校验(integrity + 必需表 app_meta/user/task_job/ device_group + schema 版本提示)→ 确认应用:先自动快照当前库到 data/backups/pre_restore_*.db,再把备份落到 data/restore_pending/,由 web_server.py 在 init_db 之前 consume 换库——TaskManager 启动时才读库入内存、 Windows 不能热替换正被持有的库文件,故导入必须重启生效。 新增 web/system_api.py(export/preview/apply,全 @admin_required)与目录常量 BACKUP_DIR/RESTORE_STAGING_DIR/RESTORE_PENDING_DIR;.gitignore 排除运行产物。
This commit is contained in:
@@ -48,3 +48,6 @@ data/*.corrupt_*
|
||||
data/users.db*
|
||||
data/users.db-wal
|
||||
data/users.db-shm
|
||||
data/backups/
|
||||
data/restore_staging/
|
||||
data/restore_pending/
|
||||
|
||||
Reference in New Issue
Block a user