在 Linux 上迁移 GitLab,常见场景有 同机迁移、跨服务器迁移、版本升级迁移。下面我按最通用、最稳妥的方式给你一个完整流程,适用于 Omnibus 版 GitLab(官方推荐)。
gitlab-rake gitlab:env:info
或
cat /opt/gitlab/version-manifest.txt
✅ 强烈建议:源和目标 GitLab 版本一致
gitlab-ctl stop
gitlab-rake gitlab:backup:create
备份文件默认在:
/var/opt/gitlab/backups/
文件名类似:
1234567890_2026_01_21_gitlab_backup.tar
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
建议打包:
tar czvf gitlab-config.tar.gz /etc/gitlab
scp /var/opt/gitlab/backups/*.tar root@new-server:/var/opt/gitlab/backups/
scp gitlab-config.tar.gz root@new-server:/tmp/
rsync -avz /var/opt/gitlab/backups/*.tar new-server:/var/opt/gitlab/backups/
(以 Ubuntu / Debian 为例)
apt-get update
apt-get install -y curl openssh-server
curl -fsSL https://packages.gitlab.com/gpg.key | gpg --dearmor > /usr/share/keyrings/gitlab.gpg
echo "deb [signed-by=/usr/share/keyrings/gitlab.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/ubuntu $(lsb_release -cs) main" \
> /etc/apt/sources.list.d/gitlab_gitlab-ee.list
apt-get update
apt-get install gitlab-ee=16.7.2-ee.0
⚠️ 版本号必须和源一致
tar xzvf /tmp/gitlab-config.tar.gz -C /
gitlab-ctl reconfigure
chown git.git /var/opt/gitlab/backups/*.tar
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1234567890_2026_01_21
只写文件名前缀,不要
.tar
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
浏览器访问:
http://<新服务器IP>
✅ 登录
✅ 仓库
✅ CI/CD
✅ 用户权限
backup is from GitLab 16.3, current is 16.7
✅ 解决:安装相同版本
chown -R git.git /var/opt/gitlab/backups
恢复 /etc/gitlab/gitlab-secrets.json 后必须:
gitlab-ctl reconfigure
docker exec -t gitlab gitlab-backup create
docker cp gitlab:/var/opt/gitlab/backups /backup
sudo -u git bundle exec rake gitlab:backup:create RAILS_ENV=production
✅ 最稳妥
同版本 + 官方备份 + 配置文件恢复
✅ 适用场景
如果你愿意,可以告诉我:
我可以给你 定制迁移方案 + 零停机方案。