3.0 KiB
3.0 KiB
备份与恢复脚本
云服务器站点数据备份和灾难恢复工具集。
目录结构
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 scripts/backup/backup-sites.sh
# 仅备份指定站点
bash scripts/backup/backup-sites.sh assets issue
# 可用站点(自动发现含 DB 的 *-ai 目录):assets, issue, ldap, gitea, oa, monitor
恢复站点
# 交互式恢复(自动检测备份,选择站点)
bash scripts/backup/restore-sites.sh
# 指定时间戳恢复
bash scripts/backup/restore-sites.sh 20260622_101858
数据库单独备份
# 仅备份数据库(快速)
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/ |
恢复流程
恢复脚本会自动处理:
- Docker 网络创建(webnet)
- SSL 证书恢复
- Nginx 配置恢复并重载
- 各站点容器启动
- 数据库恢复
灾难恢复步骤
当云服务器完全不可用时,在新服务器上:
# 1. 安装 Docker 和 docker-compose
# 2. 下载备份文件到本地
scp user@backup-server:/path/to/backup/*.tar.gz ./
# 3. 执行恢复
bash scripts/backup/restore-sites.sh
自动备份
建议配置 crontab 定期执行:
# 每天凌晨 3 点执行站点备份
0 3 * * * cd /Users/niuniu/programs/docker && bash scripts/backup/backup-sites.sh >> /var/log/backup.log 2>&1
注意事项
- 备份前会自动执行 WAL checkpoint,确保数据库完整性
- 恢复会重启相关容器,短暂影响服务
- Gitea 代码仓库备份较大(~130M),可考虑单独备份频率
- 建议定期验证备份文件可恢复性