website-scripts/backup/README.md

90 lines
3.0 KiB
Markdown
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.

# 备份与恢复
统一备份恢复工具,支持远程(从本地 Mac 操作服务器)和本地(直接在服务器上执行)两种模式。
## 快速上手
```bash
# 备份
bash scripts/backup/backup.sh # 站点完整备份(推荐)
bash scripts/backup/backup.sh --db-only # 仅数据库
bash scripts/backup/backup.sh --full # 灾难备份
bash scripts/backup/backup.sh assets monitor # 仅指定站点
# 恢复
bash scripts/backup/restore.sh # 交互式恢复
bash scripts/backup/restore.sh 20260708_120000 # 指定时间戳
bash scripts/backup/restore.sh --db monitor file.db # 数据库恢复
bash scripts/backup/restore.sh --full backup.tar.gz # 灾难恢复
```
## 远程 vs 本地模式
| | 远程模式(默认) | 本地模式 `--local` |
|------|------|------|
| 执行位置 | 本地 Mac | 服务器上 |
| Docker 操作 | `ssh txjp "docker ..."` | 直接 `docker ...` |
| 文件传输 | `scp` | 本地 `cp` |
| 适用场景 | 日常运维 | 灾难恢复 / 新服务器 |
```bash
# 远程(默认)
bash scripts/backup/backup.sh
# 本地
bash scripts/backup/backup.sh --local
bash scripts/backup/restore.sh --local --full full-backup.tar.gz
```
## 新服务器灾难恢复流程
```bash
# 1. 在新服务器上安装 Docker + Compose V2
# 2. 上传脚本和备份文件
scp scripts/backup/*.sh user@new-server:/root/docker/scripts/backup/
scp full-backup-20260708.tar.gz user@new-server:/root/docker/
# 3. 在新服务器上执行本地恢复
ssh user@new-server
cd /root/docker && bash scripts/backup/restore.sh --local --full full-backup-20260708.tar.gz
```
## 备份内容
| 站点 | 备份项 |
|------|------|
| assets | assets.db + uploads/ + docker-compose.yml + .env + Dockerfile |
| issue | issue.db + uploads/ + reports/ + docker-compose.yml + .env + Dockerfile |
| ldap | users.db + docker-compose.yml + .env + Dockerfile |
| gitea | gitea.db + git仓库/ + conf/ + docker-compose.yml |
| monitor | monitor.db + docker-compose.yml + .env |
| oa | docker-compose.yml + .env无独立数据库 |
| shared | nginx配置 + SSL证书 + Docker网络配置 |
## 备份存储
| 位置 | 路径 |
|------|------|
| 本地 | `/Users/niuniu/programs/docker/db-backups/` |
| 云端 | `/root/docker/db-backups/` |
## 自动备份
```bash
# 每天凌晨 3 点
0 3 * * * cd /Users/niuniu/programs/docker && bash scripts/backup/backup.sh
```
## 新增站点
无需修改脚本——自动发现 `*-ai/docker-compose.yml` 中含 DB 的站点。新站点只需在 `backup.sh` 的 case 语句中添加专用备份逻辑(或走 wildcard 通用备份)。
## 注意事项
- 备份前自动执行 WAL checkpoint确保数据库完整性
- 恢复会重启相关容器,**短暂影响服务**
- Gitea 代码仓库备份较大(~130M可单独调整备份频率
- `--full` 灾难备份不含 uploads 等动态文件,仅保存数据库 + 代码仓库 + 配置
- 建议定期验证备份文件可恢复性