website-scripts/backup/README.md

122 lines
2.9 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.

# 备份与恢复脚本
云服务器站点数据备份和灾难恢复工具集。
## 目录结构
```
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
# 可用站点assets, issue, ldap, gitea, oa
```
### 恢复站点
```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无独立数据库 |
### 共享资源备份
| 资源 | 内容 |
|------|------|
| 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可考虑单独备份频率
- 建议定期验证备份文件可恢复性