123 lines
3.0 KiB
Markdown
123 lines
3.0 KiB
Markdown
# 备份与恢复脚本
|
||
|
||
云服务器站点数据备份和灾难恢复工具集。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
scripts/backup/
|
||
├── backup-db.sh # 数据库备份(轻量)
|
||
├── backup-full.sh # 完整灾难恢复备份
|
||
├── backup-sites.sh # 站点独立备份(推荐)
|
||
├── restore-db.sh # 数据库恢复
|
||
├── restore-full.sh # 完整恢复
|
||
└── restore-sites.sh # 站点恢复
|
||
```
|
||
|
||
## 备份策略对比
|
||
|
||
| 脚本 | 内容 | 大小 | 用途 |
|
||
|------|------|------|------|
|
||
| backup-db.sh | 仅数据库 | ~3M | 日常快速备份 |
|
||
| backup-sites.sh | 数据库+配置+文件 | ~135M | **推荐**:按站点独立备份 |
|
||
| backup-full.sh | 全部数据 | ~135M | 完整灾难恢复 |
|
||
|
||
## 使用方法
|
||
|
||
### 站点独立备份(推荐)
|
||
|
||
```bash
|
||
# 备份所有站点
|
||
bash scripts/backup/backup-sites.sh
|
||
|
||
# 仅备份指定站点
|
||
bash scripts/backup/backup-sites.sh assets issue
|
||
|
||
# 可用站点(自动发现含 DB 的 *-ai 目录):assets, issue, ldap, gitea, oa, monitor
|
||
```
|
||
|
||
### 恢复站点
|
||
|
||
```bash
|
||
# 交互式恢复(自动检测备份,选择站点)
|
||
bash scripts/backup/restore-sites.sh
|
||
|
||
# 指定时间戳恢复
|
||
bash scripts/backup/restore-sites.sh 20260622_101858
|
||
```
|
||
|
||
### 数据库单独备份
|
||
|
||
```bash
|
||
# 仅备份数据库(快速)
|
||
bash scripts/backup/backup-db.sh
|
||
```
|
||
|
||
## 备份内容
|
||
|
||
### 各站点备份内容
|
||
|
||
| 站点 | 包含内容 |
|
||
|------|---------|
|
||
| assets | 数据库 + 上传文件 + docker-compose + .env + Dockerfile |
|
||
| issue | 数据库 + 上传文件 + 报告 + docker-compose + .env + Dockerfile |
|
||
| ldap | 数据库 + docker-compose + .env + Dockerfile |
|
||
| gitea | 数据库 + 代码仓库 + 配置 + docker-compose |
|
||
| oa | docker-compose + .env(无独立数据库) |
|
||
| monitor | 数据库 + docker-compose + .env |
|
||
|
||
### 共享资源备份
|
||
|
||
| 资源 | 内容 |
|
||
|------|------|
|
||
| nginx | 9 个反向代理配置文件 |
|
||
| ssl | Let's Encrypt 证书 |
|
||
| docker-network | webnet 网络配置 |
|
||
|
||
## 备份存储位置
|
||
|
||
| 位置 | 路径 |
|
||
|------|------|
|
||
| 本地 | `/Users/niuniu/programs/docker/db-backups/` |
|
||
| 云端 | `/root/docker/db-backups/` |
|
||
|
||
## 恢复流程
|
||
|
||
恢复脚本会自动处理:
|
||
|
||
1. Docker 网络创建(webnet)
|
||
2. SSL 证书恢复
|
||
3. Nginx 配置恢复并重载
|
||
4. 各站点容器启动
|
||
5. 数据库恢复
|
||
|
||
## 灾难恢复步骤
|
||
|
||
当云服务器完全不可用时,在新服务器上:
|
||
|
||
```bash
|
||
# 1. 安装 Docker 和 docker-compose
|
||
|
||
# 2. 下载备份文件到本地
|
||
scp user@backup-server:/path/to/backup/*.tar.gz ./
|
||
|
||
# 3. 执行恢复
|
||
bash scripts/backup/restore-sites.sh
|
||
```
|
||
|
||
## 自动备份
|
||
|
||
建议配置 crontab 定期执行:
|
||
|
||
```bash
|
||
# 每天凌晨 3 点执行站点备份
|
||
0 3 * * * cd /Users/niuniu/programs/docker && bash scripts/backup/backup-sites.sh >> /var/log/backup.log 2>&1
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
- 备份前会自动执行 WAL checkpoint,确保数据库完整性
|
||
- 恢复会重启相关容器,短暂影响服务
|
||
- Gitea 代码仓库备份较大(~130M),可考虑单独备份频率
|
||
- 建议定期验证备份文件可恢复性
|