Files
IOT_SIM/deploy/backup.sh
T
xuyueandClaude Opus 5.5 982b1297aa
CI/CD / test (push) Canceled after 0s
CI/CD / deploy (push) Canceled after 0s
试用前准备:全班模拟压测、评分并发 6→16、手动备份与恢复
- test/classroom.ts:45 个虚拟学生走一遍登录、运行、自测、提交,统计每个环节等多久
- 评分并发可配置(SIM_GRADE_CONCURRENCY,默认 16),提交队列同时评的份数跟着走;
  2 核实测项目 8 任务 3 全班自测从约 4 分钟降到约 1.5 分钟
- 检查的默认等待 2 秒→5 秒,机器忙时不再误判正确的程序
- 删除学生时删除他的数据库(编号会重新用给新学生)
- deploy/backup.sh、deploy/restore.sh:手动备份到宿主机 backups/,恢复前先备份

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-25 20:08:31 +08:00

22 lines
1.1 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# 在服务器上执行:备份平台的全部数据(账号、班级、学生作品、作业、提交、评阅,以及每个学生自己的数据库)
# 到 backups/<日期时间>/。备份在宿主机上,不在 Docker 数据卷里,数据卷被删也还在;要防硬盘坏,把它拷到别的机器上。
# 平台运行中也可以备份,学生不受影响。恢复见 deploy/restore.sh。
# 用法:deploy/backup.sh
set -euo pipefail
cd "$(dirname "$0")/.."
mkdir -p backups
name=$(date +%Y%m%d-%H%M%S)
# 同一秒里做了两次(如 restore.sh 恢复前先备份)时,等到下一秒,不和已有的备份重名
while [[ -e backups/$name ]]; do
sleep 1
name=$(date +%Y%m%d-%H%M%S)
done
inside=/data/.backup-$name
# 在容器里导出(SQLite 一致读取,不会备份出写了一半的库),再拷到宿主机
docker compose exec -T app bun server.js backup "$inside" >/dev/null
docker compose cp "app:$inside" "backups/$name" 2>/dev/null
docker compose exec -T app rm -rf "$inside"
echo "已备份到 $(pwd)/backups/$name($(du -sh "backups/$name" | cut -f1))"