website-scripts/backup/README.md

3.0 KiB
Raw Permalink Blame History

备份与恢复

统一备份恢复工具,支持远程(从本地 Mac 操作服务器)和本地(直接在服务器上执行)两种模式。

快速上手

# 备份
bash scripts/backup/backup.sh                        # 站点完整备份(推荐)
bash scripts/backup/backup.sh --db-only               # 仅数据库
bash scripts/backup/backup.sh --full                  # 灾难备份
bash scripts/backup/backup.sh assets monitor          # 仅指定站点

# 恢复
bash scripts/backup/restore.sh                        # 交互式恢复
bash scripts/backup/restore.sh 20260708_120000        # 指定时间戳
bash scripts/backup/restore.sh --db monitor file.db   # 数据库恢复
bash scripts/backup/restore.sh --full backup.tar.gz   # 灾难恢复

远程 vs 本地模式

远程模式(默认) 本地模式 --local
执行位置 本地 Mac 服务器上
Docker 操作 ssh txjp "docker ..." 直接 docker ...
文件传输 scp 本地 cp
适用场景 日常运维 灾难恢复 / 新服务器
# 远程(默认)
bash scripts/backup/backup.sh

# 本地
bash scripts/backup/backup.sh --local
bash scripts/backup/restore.sh --local --full full-backup.tar.gz

新服务器灾难恢复流程

# 1. 在新服务器上安装 Docker + Compose V2

# 2. 上传脚本和备份文件
scp scripts/backup/*.sh user@new-server:/root/docker/scripts/backup/
scp full-backup-20260708.tar.gz user@new-server:/root/docker/

# 3. 在新服务器上执行本地恢复
ssh user@new-server
cd /root/docker && bash scripts/backup/restore.sh --local --full full-backup-20260708.tar.gz

备份内容

站点 备份项
assets assets.db + uploads/ + docker-compose.yml + .env + Dockerfile
issue issue.db + uploads/ + reports/ + docker-compose.yml + .env + Dockerfile
ldap users.db + docker-compose.yml + .env + Dockerfile
gitea gitea.db + git仓库/ + conf/ + docker-compose.yml
monitor monitor.db + docker-compose.yml + .env
oa docker-compose.yml + .env无独立数据库
shared nginx配置 + SSL证书 + Docker网络配置

备份存储

位置 路径
本地 /Users/niuniu/programs/docker/db-backups/
云端 /root/docker/db-backups/

自动备份

# 每天凌晨 3 点
0 3 * * * cd /Users/niuniu/programs/docker && bash scripts/backup/backup.sh

新增站点

无需修改脚本——自动发现 *-ai/docker-compose.yml 中含 DB 的站点。新站点只需在 backup.sh 的 case 语句中添加专用备份逻辑(或走 wildcard 通用备份)。

注意事项

  • 备份前自动执行 WAL checkpoint确保数据库完整性
  • 恢复会重启相关容器,短暂影响服务
  • Gitea 代码仓库备份较大(~130M可单独调整备份频率
  • --full 灾难备份不含 uploads 等动态文件,仅保存数据库 + 代码仓库 + 配置
  • 建议定期验证备份文件可恢复性