90 lines
3.0 KiB
Markdown
90 lines
3.0 KiB
Markdown
# 备份与恢复
|
||
|
||
统一备份恢复工具,支持远程(从本地 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 等动态文件,仅保存数据库 + 代码仓库 + 配置
|
||
- 建议定期验证备份文件可恢复性
|