website-scripts/backup/README.md

118 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.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可考虑单独备份频率
- 建议定期验证备份文件可恢复性