For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt, and this page is available as Markdown at /manual/features/backup.md.

备份与复制

AstraSchedule 提供数据库备份和配置复制功能,可用于保存数据、跨数据库迁移、班级间复用配置。

完整备份导出

完整备份导出功能将数据库中全部配置数据导出为一个 JSON 文件,涵盖以下八张数据表:

表名内容
schedules所有班级的课表数据
client_configs客户端通用设置(横幅文字、天气预警、温度颜色、倒计时目标等)
timetables作息时间表数据
subjects科目简称与全称的映射关系
data_versions数据版本号(用于客户端增量更新判断)
autorun_records自动任务记录(调休、作息调整等)
countdown_records倒数日日程数据
users管理员用户数据(用户名、密码哈希、角色、作用域)

导出的 JSON 文件包含以上八张表的数据。在管理端的"实用工具"页面点击"导出备份"即可下载备份文件。

系统备份/还原位置示意图

完整备份导入

导入备份文件时,系统提供两种导入模式:

  • 覆盖模式:备份文件中的每条记录,如果数据库中已存在相同主键的记录,则更新该记录
  • 跳过模式:备份文件中的每条记录,如果数据库中已存在相同主键的记录,则忽略

导入过程在一个数据库事务中执行,全部八张表要么全部成功导入,要么全部回滚。在管理端的"实用工具"页面选择备份文件、指定导入模式后上传即可。

跨数据库迁移

备份导出导入机制可用于跨数据库类型迁移。导出的 JSON 文件与数据库类型无关,迁移步骤:

  1. 从 SQLite 数据库导出完整备份 JSON。
  2. 在服务端配置中将数据库类型从 sqlite 切换为 mysql(修改 config.toml 中的 db.type 和相关连接参数)。
  3. 重启服务端,此时新的 MySQL 数据库为空。
  4. 在管理端导入之前导出的备份 JSON,选择覆盖模式。

反之亦然(MySQL 迁移到 SQLite)。此过程由系统处理,不依赖数据库特定的导出工具。

TIP

SaaS 系统能够自动兼容来自自部署导出的备份文件

配置复制

配置复制位置示意图

管理端的"实用工具"页面提供班级间配置复制功能。复制操作涵盖以下内容:

  • 科目配置(简称、全称映射)
  • 作息时间表
  • 课表数据
  • 通用设置(横幅、天气、倒计时等)

操作步骤:

  1. 选择来源班级:通过三个下拉框依次选择学校、年级、班级(需已存在完整配置)。
  2. 填写目标班级:分别在「目标学校 / 目标年级 / 目标班级」三个输入框中填写(格式与管理后台的班级标识一致,如 39 / 2023 / 2)。
  3. 确认来源与目标不相同后,执行复制。

复制操作由服务端处理,确保所有相关配置表的数据一致复制。在一个班级中配置完毕后,可复制到所有同年级班级,再针对各班差异微调。复制成功或失败均有提示信息。

手动备份 SQLite

对于使用 SQLite 数据库的部署场景(包括传统部署和 Serverless 部署中的 SQLite 模式),可以进行文件级的手动备份。SQLite 数据库为单个 .db 文件(默认路径由 config.toml 中的 db.path 指定),直接复制该文件即可完成备份:

# 传统部署示例(实际路径以 config.toml 的 db.path 为准)
cp /opt/astraschedule/data/astra.db /backup/astra-backup-$(date +%Y%m%d).db

手动备份适用于自动化运维脚本、定时任务等场景。由于 SQLite 文件在服务端运行时可能正在被写入,建议在备份前先停止服务端,或使用支持文件快照的文件系统。

对于使用 MySQL 的部署场景,建议使用管理端的完整备份导出功能或 MySQL 自身的 mysqldump 工具。