118 lines
2.9 KiB
Markdown
118 lines
2.9 KiB
Markdown
# 备份与恢复脚本
|
||
|
||
云服务器站点数据备份和灾难恢复工具集。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
scripts/backup/
|
||
├── backup.sh # 统一备份(默认=站点完整,--db-only=仅DB,--full=灾难)
|
||
└── restore.sh # 统一恢复(默认=交互式,--db=数据库,--full=灾难)
|
||
```
|
||
|
||
## 备份策略
|
||
|
||
| 命令 | 内容 | 大小 | 用途 |
|
||
|------|------|------|------|
|
||
| `backup.sh` | 数据库+配置+文件 | ~135M | **推荐**:按站点独立备份 |
|
||
| `backup.sh --db-only` | 仅数据库 | ~3M | 日常快速备份 |
|
||
| `backup.sh --full` | 全部数据 | ~135M | 完整灾难恢复 |
|
||
|
||
## 使用方法
|
||
|
||
### 备份
|
||
|
||
```bash
|
||
# 站点完整备份(默认,推荐)
|
||
bash scripts/backup/backup.sh
|
||
bash scripts/backup/backup.sh assets monitor # 指定站点
|
||
|
||
# 仅数据库
|
||
bash scripts/backup/backup.sh --db-only
|
||
|
||
# 灾难备份
|
||
bash scripts/backup/backup.sh --full
|
||
```
|
||
|
||
### 恢复
|
||
|
||
```bash
|
||
# 交互式恢复(默认,自动检测备份)
|
||
bash scripts/backup/restore.sh
|
||
bash scripts/backup/restore.sh 20260708_120000 # 指定时间戳
|
||
|
||
# 数据库恢复
|
||
bash scripts/backup/restore.sh --db monitor monitor-20260708.db
|
||
|
||
# 灾难恢复
|
||
bash scripts/backup/restore.sh --full full-backup-20260708.tar.gz
|
||
```
|
||
|
||
## 备份内容
|
||
|
||
### 各站点备份内容
|
||
|
||
| 站点 | 包含内容 |
|
||
|------|---------|
|
||
| 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),可考虑单独备份频率
|
||
- 建议定期验证备份文件可恢复性
|