#!/usr/bin/env bash # nex_math 数据库运维:备份 / 恢复 / 内容快照。 # # ./scripts/db.sh backup [标签] 备份 data/math.db(seed --force 也会自动备份) # ./scripts/db.sh list 列出本机备份 # ./scripts/db.sh restore [文件|latest] 用备份覆盖当前库(覆盖前先自动备份) # ./scripts/db.sh dump [输出文件] 导出内容快照(教材/章节/知识点/课程/题库),可提交进 git # ./scripts/db.sh dump <输出文件> --full 同上,但含账号/答题记录/错题本,可整库还原 # ./scripts/db.sh load [快照文件] 把内容快照灌回当前库 # ./scripts/db.sh path 数据库文件位置 # # 为什么要 dump:.gitignore 里 data/*.db 让库文件从来就没进过远端仓库, # 库一重置,章节和题目就没了。把内容表导成 SQL 文本提交后, # 远端仓库里始终有一份可恢复的数据库快照(且不含账号、答题记录等个人数据)。 set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" PY="$ROOT_DIR/backend/.venv/bin/python" if [ ! -x "$PY" ]; then echo "[db] 未找到 backend/.venv,请先执行 ./scripts/init.sh" >&2 exit 1 fi cd "$ROOT_DIR/backend" exec "$PY" -m dbtool "$@"