温馨提示×

如何备份Linux GitLab

小樊
38
2026-08-24 22:47:26
栏目: 智能运维

备份 Linux 上的 GitLab 通常有两种情况:
使用 Omnibus 安装的 GitLab(最常见)
使用 Docker / Kubernetes / 源码安装(方式不同)

下面以 Omnibus GitLab(官方推荐) 为主,其他情况也会说明。


一、使用 Omnibus GitLab(最常见)

✅ 1. 确认 GitLab 版本

gitlab-rake gitlab:env:info

✅ 2. 使用官方备份命令(推荐)

GitLab 自带备份工具,会备份:

  • 仓库(Repositories)
  • 数据库(PostgreSQL)
  • 附件(Uploads)
  • CI/CD 数据
  • 配置(可选)

执行备份

sudo gitlab-backup create

旧版本命令(< 12.2):

sudo gitlab-rake gitlab:backup:create

执行完成后,备份文件位于:

/var/opt/gitlab/backups/

文件名类似:

1690000000_2023_07_22_gitlab_backup.tar

✅ 3. 备份 GitLab 配置文件(非常重要)

备份命令 不会 自动备份配置文件,需要手动备份:

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

建议一起打包:

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

✅ 4. 修改备份目录(可选)

编辑配置文件:

sudo vim /etc/gitlab/gitlab.rb

设置备份路径:

gitlab_rails['backup_path'] = "/data/gitlab/backups"

然后执行:

sudo gitlab-ctl reconfigure

✅ 5. 设置自动备份(cron)

sudo crontab -e

每天凌晨 2 点备份:

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

CRON=1 可抑制不必要的输出


二、恢复 GitLab 备份

✅ 前提条件

  • GitLab 版本必须一致
  • 配置文件必须恢复

✅ 恢复步骤

  1. 停止连接服务
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
  1. 恢复备份
sudo gitlab-backup restore BACKUP=1690000000_2023_07_22
  1. 恢复配置文件
sudo cp gitlab.rb.bak /etc/gitlab/gitlab.rb
sudo cp gitlab-secrets.json.bak /etc/gitlab/gitlab-secrets.json
  1. 重新配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
  1. 检查状态
sudo gitlab-rake gitlab:check SANITIZE=true

三、Docker 方式安装的 GitLab 备份

备份

docker exec -t gitlab gitlab-backup create

备份配置

docker cp gitlab:/etc/gitlab/gitlab.rb .
docker cp gitlab:/etc/gitlab/gitlab-secrets.json .

四、备份策略建议(生产环境)

✅ 备份内容:

  • /var/opt/gitlab/backups
  • /etc/gitlab
  • 如果是 Docker:volume 数据

✅ 备份频率:

  • 每日全量
  • 重要仓库可结合 rsync

✅ 异地备份:

  • 同步到 OSS / S3 / 远程服务器

五、常见问题

❓ 备份很大怎么办?

  • 排除 CI 日志
  • 使用增量备份(GitLab EE 支持)

❓ 恢复后 500 错误?

  • 通常是版本不一致
  • gitlab-secrets.json 未恢复

如果你愿意,我可以:

  • ✅ 给你一份 生产环境 GitLab 备份方案
  • ✅ 帮你写 自动备份 + 上传脚本
  • ✅ 针对 Docker / Kubernetes / 老版本 GitLab 单独说明

你现在用的是 Omnibus、Docker 还是其他方式?

0