Files
dekun 530a8b70a1 学生资料设置、头像与自动备份恢复。
首页卡片支持修改/删除;详情页设置 Tab 可维护学校、年级与头像;系统设置新增数据备份下载与恢复;备份默认存 /root/grade-archive-backups,详见 docs/BACKUP.md。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-28 17:56:09 +08:00

110 lines
3.4 KiB
Markdown
Raw Permalink 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.
# 数据备份与恢复
> **中学成绩档案系统** · 备份目录默认 `/root/grade-archive-backups`
---
## 1. 备份内容
每次备份生成一个压缩包 `grade-archive_YYYYMMDD_HHMMSS.tar.gz`,包含:
| 文件/目录 | 说明 |
|-----------|------|
| `database.sql` | PostgreSQL 全库导出(含 `--clean`,可覆盖恢复) |
| `uploads/` | 错题图片、学生头像等上传文件 |
| `manifest.json` | 备份元信息(时间、库名) |
---
## 2. 自动备份
- **目录**`/root/grade-archive-backups`(可通过 `.env``BACKUP_DIR` 修改)
- **频率**:应用启动后每 **24 小时**自动备份一次(`AUTO_BACKUP_INTERVAL_HOURS=24`
- **保留**:默认保留最近 **30 天**`BACKUP_RETENTION_DAYS=30`
- **系统 cron**(可选,安装脚本会写入):每天凌晨 3:00 执行 `deploy/backup.sh`
### 环境变量(`.env`
```env
BACKUP_DIR=/root/grade-archive-backups
BACKUP_RETENTION_DAYS=30
AUTO_BACKUP_INTERVAL_HOURS=24
```
---
## 3. 手动备份(服务器命令行)
```bash
sudo BACKUP_DIR=/root/grade-archive-backups \
bash /opt/secondary-school-grade-archive/deploy/backup.sh
```
备份文件位于 `/root/grade-archive-backups/`
---
## 4. 系统设置中下载备份
1. 使用超级管理员登录
2. 进入 **系统设置 → 数据备份**
3. 点击 **立即备份** 或等待自动备份
4. 在列表中点击 **下载** 保存 `.tar.gz` 到本地
---
## 5. 更换服务器 — 数据恢复
### 方式 A:Web 界面(推荐)
1. 在新服务器完成 `deploy/install.sh``git pull` 到最新版本
2. 超级管理员登录 → **系统设置 → 数据备份**
3. 在「数据恢复」区域上传旧服务器下载的 `grade-archive_*.tar.gz`
4. 恢复成功后建议执行:`sudo systemctl restart grade-archive`
### 方式 B:命令行
1. 将备份包复制到新服务器,例如 `/root/grade-archive_20260628_030000.tar.gz`
2. 执行:
```bash
sudo bash /opt/secondary-school-grade-archive/deploy/restore.sh \
/root/grade-archive_20260628_030000.tar.gz
```
3. 按提示确认后,脚本会恢复数据库与 `uploads/`,并尝试重启服务
---
## 6. 迁移检查清单
- [ ] 旧服务器下载最新备份包
- [ ] 新服务器安装系统(`install.sh`)并配置 Ollama / OCR 地址
- [ ] 上传备份并恢复
- [ ] 验证学生资料、成绩、错题图片、头像是否正常
- [ ] 确认 `.env``OLLAMA_BASE_URL``OCR_SERVICE_URL` 符合新环境
---
## 7. 注意事项
- **恢复会覆盖**当前数据库与 `uploads` 目录,操作前请先备份当前数据
- 备份与恢复需要服务器已安装 `pg_dump` / `psql`(安装脚本已包含 PostgreSQL
- 备份目录在 `/root` 下,仅 root 可读写;应用以 systemd 运行时需确保 `BACKUP_DIR` 对运行用户可写,或保持默认由 root cron / 管理员 API 触发
- 学生头像、学校、年级等资料保存在数据库 `students` 表中,随数据库一并备份
---
## 8. 学生资料字段说明
| 字段 | 说明 |
|------|------|
| 姓名 | 必填 |
| 学校 | 可选,显示在卡片与详情 |
| 学段 | 初中 / 高中 |
| 年级 | 初一~初三 或 高一~高三(带明确标识) |
| 班级 | 如 `3``3班` |
| 头像 | 保存在 `uploads/{用户ID}/avatars/{学生ID}.jpg` |
在学生详情页 **设置** Tab 或首页卡片 **修改** 中维护;首页卡片支持 **删除**