website-scripts/backup
aiyimickey 4b65bfa850 feat: 完善备份和恢复脚本
- 新增备份脚本目录结构
- 新增站点独立备份脚本
- 新增完整备份脚本
- 新增数据库备份脚本
- 新增站点恢复脚本
- 新增完整恢复脚本
- 更新 README 文档
2026-06-23 10:59:41 +08:00
..
README.md feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
backup-db.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
backup-full.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
backup-sites.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
restore-db.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
restore-full.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00
restore-sites.sh feat: 完善备份和恢复脚本 2026-06-23 10:59:41 +08:00

README.md

备份与恢复脚本

云服务器站点数据备份和灾难恢复工具集。

目录结构

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

# 可用站点assets, issue, ldap, gitea, oa

恢复站点

# 交互式恢复(自动检测备份,选择站点)
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无独立数据库

共享资源备份

资源 内容
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. 数据库恢复

灾难恢复步骤

当云服务器完全不可用时,在新服务器上:

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