跳到主要内容

备份

备份是通过 SQLite Backup API 创建的在线 SQLite 快照,可以在 WAL 模式下 安全运行,无需外部工具即可恢复。

备份模型

备份是 SQLite 数据库的一致快照,在服务器运行时创建:

  • POST /api/v2/backups 通过 SQLite Backup API 创建快照, 这在 WAL 模式下是安全的,并且不会阻塞读操作。
  • GET /api/v2/backups 列出现有备份;缓存内容和日志不包含在内。

每条备份记录显示其日期、大小、schema 版本、来源和状态。界面显示相同 的信息,创建备份绝不会中断读取本地数据。

备份覆盖的内容

备份覆盖整个结构化数据库:角色、人设、聊天和消息、设定集、预设、提供商 配置、插件状态和设置。它不包括:

  • cache/thumbnails/ —— 可重新生成,按设计排除;
  • 日志 —— 按设计排除;
  • 导入暂存目录 —— 按设计是临时的。

files/ 中的原始文件是内容寻址的,绝不会被缓存维护触碰, 因此它们不是快照本身的一部分。

恢复

POST /api/v2/backups/:id/restore 遵循一个安全的顺序:

  1. 创建并轮转当前状态的安全备份
  2. PRAGMA quick_check 校验选定的快照。
  3. 通过 SQLite Online Backup API 把它复制到活动数据库中。

连接和仓库保持打开:响应携带 restartRequired: false, 随后的读写无需重启即可继续工作。恢复永远不需要外部的 SQLite 工具。 失败的快照或复制返回 RESTORE_FAILED,安全备份被保留, 因此当前状态绝不会在失败的恢复中丢失。

在界面中,恢复需要显式确认,在完整性检查通过之前绝不会被报告为成功, 如果出现问题还会提供自动返回安全副本的选项。删除备份时, 如果它是最后一个可用副本,会向你发出警告。

备份作为安全网

相同的快照机制保护危险操作:

  • 迁移运行器在重建或重塑表的迁移之前,为有数据的数据库创建迁移前备份。
  • 导入执行在写入任何选定的数据之前创建安全备份, 因此失败或被中断的导入总是可以回滚。
  • 恢复总是先快照当前状态,如上所述。

另请参阅