# 备份与恢复脚本 云服务器站点数据备份和灾难恢复工具集。 ## 目录结构 ``` 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),可考虑单独备份频率 - 建议定期验证备份文件可恢复性