在 Linux 环境下迁移 GitLab(通常指 Omnibus 安装的 GitLab)一般有两种常见场景:
下面以 Omnibus GitLab(最常用) 为例说明标准做法。
cat /opt/gitlab/version-manifest.txt
# 或
gitlab-rake gitlab:env:info
记录:
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
(GitLab 14+ 可省略)
gitlab-rake gitlab:backup:create
备份文件位置:
/var/opt/gitlab/backups/
# 文件名类似:
1670000000_2023_12_01_16.0.1_gitlab_backup.tar
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
# 以 CentOS 为例
yum install -y gitlab-ee-16.0.1
或参考官方: https://about.gitlab.com/install/
scp root@old-server:/etc/gitlab/gitlab.rb /etc/gitlab/
scp root@old-server:/etc/gitlab/gitlab-secrets.json /etc/gitlab/
gitlab-ctl reconfigure
scp root@old-server:/var/opt/gitlab/backups/*.tar \
/var/opt/gitlab/backups/
gitlab-ctl stop
gitlab-rake gitlab:backup:restore BACKUP=1670000000_2023_12_01_16.0.1
按提示输入 yes
gitlab-ctl start
gitlab-rake gitlab:check SANITIZE=true
docker exec -t gitlab gitlab-backup create
gitlab.rbgitlab-secrets.jsonbackups/*.targitlab-backup restore如果你是直接换机器:
/var/opt/gitlab 和 /etc/gitlabgitlab-ctl reconfigure⚠️ 不推荐跨大版本直接拷贝数据目录
✅ 必须保证:
gitlab-secrets.json 必须一致(否则 CI / Token 失效)❌ 不推荐:
| 问题 | 解决 |
|---|---|
| secrets 不一致 | 拷贝 gitlab-secrets.json |
| 版本不匹配 | 先升级再迁移 |
| 权限错误 | chown -R git:git /var/opt/gitlab/backups |
如果你能告诉我:
我可以给你更精确的迁移命令。