温馨提示×

Linux GitLab怎么备份

小樊
36
2026-08-24 22:36:24
栏目: 智能运维

在 Linux 上备份 GitLab 主要有 官方推荐方式手动方式。下面按 最常用、最安全 的方式给你说明,适用于 Omnibus GitLab(最常见安装方式)。


✅ 一、官方推荐:使用 gitlab-backup 命令(最重要)

1️⃣ 创建备份

sudo gitlab-backup create

旧版本命令可能是:

sudo gitlab-rake gitlab:backup:create

执行完成后,备份文件会生成在:

/var/opt/gitlab/backups/

文件名类似:

1700000000_2025_01_01_gitlab_backup.tar

2️⃣ 备份内容包括什么?

✅ 包含:

  • 仓库(Git repos)
  • 数据库(PostgreSQL)
  • 上传文件
  • CI/CD 数据
  • 配置(部分)

不包含

  • /etc/gitlab/gitlab.rb
  • /etc/gitlab/gitlab-secrets.json

⚠️ 这两个文件必须单独备份!


✅ 二、必须单独备份的配置文件(非常重要)

sudo cp /etc/gitlab/gitlab.rb /backup/
sudo cp /etc/gitlab/gitlab-secrets.json /backup/

或者打包:

sudo tar -czf gitlab-config-$(date +%F).tar.gz /etc/gitlab

❗ 不备份 gitlab-secrets.json 会导致:

  • CI/CD 变量无法解密
  • Runner 无法使用
  • 2FA / 加密数据失效

✅ 三、完整备份方案(推荐)

✅ 手动完整备份

# 1. 停止部分服务(可选,更安全)
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

# 2. 创建备份
sudo gitlab-backup create

# 3. 启动服务
sudo gitlab-ctl start

✅ 四、自动定时备份(crontab)

编辑定时任务

sudo crontab -e

每天凌晨 2 点备份

0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1

CRON=1 会抑制交互提示


✅ 五、备份到远程服务器(推荐)

使用 rsync

rsync -avz /var/opt/gitlab/backups/ user@remote:/data/gitlab-backup/
rsync -avz /etc/gitlab/ user@remote:/data/gitlab-backup/config/

✅ 六、恢复 GitLab 备份

1️⃣ 安装 相同版本 GitLab

# 查看版本
gitlab-rake gitlab:env:info

2️⃣ 恢复备份

sudo gitlab-backup restore BACKUP=1700000000_2025_01_01

3️⃣ 恢复配置

sudo cp gitlab.rb /etc/gitlab/
sudo cp gitlab-secrets.json /etc/gitlab/

4️⃣ 重新配置并重启

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

✅ 七、Docker 方式 GitLab 备份(补充)

docker exec -t gitlab gitlab-backup create

备份路径在容器内:

/var/opt/gitlab/backups

✅ 八、备份策略建议

项目 建议
备份频率 每天
保留时间 7~30 天
是否远程 ✅ 必须
是否测试恢复 ✅ 建议

✅ 九、常见问题

❓ 备份很大怎么办?

  • 排除 CI 产物
  • 定期清理旧备份

❓ 恢复失败?

  • 版本不一致(最常见)
  • gitlab-secrets.json 不匹配

如果你愿意,可以告诉我:

  • ✅ GitLab 版本
  • ✅ 是否 Docker
  • ✅ 单机 / 集群
  • ✅ 数据量大小

我可以帮你 定制一套完整备份方案

0