备份 Linux 上的 GitLab 通常有两种情况:
✅ 使用 Omnibus 安装的 GitLab(最常见)
✅ 使用 Docker / Kubernetes / 源码安装(方式不同)
下面以 Omnibus GitLab(官方推荐) 为主,其他情况也会说明。
gitlab-rake gitlab:env:info
GitLab 自带备份工具,会备份:
sudo gitlab-backup create
旧版本命令(< 12.2):
sudo gitlab-rake gitlab:backup:create
执行完成后,备份文件位于:
/var/opt/gitlab/backups/
文件名类似:
1690000000_2023_07_22_gitlab_backup.tar
备份命令 不会 自动备份配置文件,需要手动备份:
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
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
设置备份路径:
gitlab_rails['backup_path'] = "/data/gitlab/backups"
然后执行:
sudo gitlab-ctl reconfigure
sudo crontab -e
每天凌晨 2 点备份:
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
CRON=1可抑制不必要的输出
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-backup restore BACKUP=1690000000_2023_07_22
sudo cp gitlab.rb.bak /etc/gitlab/gitlab.rb
sudo cp gitlab-secrets.json.bak /etc/gitlab/gitlab-secrets.json
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
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✅ 备份频率:
rsync✅ 异地备份:
gitlab-secrets.json 未恢复如果你愿意,我可以:
你现在用的是 Omnibus、Docker 还是其他方式?