下面按常见场景给你一个完整可操作的 Linux → Linux GitLab 数据迁移方案。如果你用的是 Omnibus GitLab(最常见),这是最稳妥的方式。
源和目标 GitLab 版本必须一致,否则可能失败。
gitlab-rake gitlab:env:info
或:
cat /opt/gitlab/version-manifest.txt
✅ 推荐:
# Ubuntu / Debian
apt-get install gitlab-ee
# CentOS / RHEL
yum install gitlab-ee
安装后先不要初始化,直接停服务:
gitlab-ctl stop
gitlab-rake gitlab:backup:create
生成文件:
/var/opt/gitlab/backups/XXXXXXXX_gitlab_backup.tar
scp /var/opt/gitlab/backups/*.tar user@new-server:/var/opt/gitlab/backups/
设置权限:
chown git.git /var/opt/gitlab/backups/*.tar
旧服务器执行:
scp /etc/gitlab/gitlab.rb user@new-server:/etc/gitlab/
scp /etc/gitlab/gitlab-secrets.json user@new-server:/etc/gitlab/
gitlab-ctl reconfigure
gitlab-ctl start
gitlab-rake gitlab:backup:restore BACKUP=XXXXXXXX
⚠️ 不要加
_gitlab_backup.tar
gitlab-rake gitlab:check
gitlab-ctl status
scp -r /var/opt/gitlab/.ssh new:/var/opt/gitlab/
scp -r /var/opt/gitlab/gitlab-ci/builds new:/var/opt/gitlab/gitlab-ci/
scp -r /var/opt/gitlab/registry new:/var/opt/gitlab/
⚠️ 风险高,仅用于同版本、同架构
rsync -avz /var/opt/gitlab/ new:/var/opt/gitlab/
rsync -avz /etc/gitlab/ new:/etc/gitlab/
然后:
gitlab-ctl reconfigure
gitlab-ctl restart
| 检查项 | 命令 |
|---|---|
| 服务状态 | gitlab-ctl status |
| 仓库访问 | 浏览器访问 GitLab |
| SSH 拉取 | git clone git@gitlab:xxx.git |
| CI/CD | 检查 Runner |
| 用户登录 | LDAP / OAuth |
backup is for version x, current is y
✅ 解决:升级旧或新服务器到同一版本
gitlab-rake db:migrate
gitlab-ctl restart
chown -R git.git /var/opt/gitlab
| 数据量 | 时间 |
|---|---|
| 10 GB | 10–20 分钟 |
| 100 GB | 1–2 小时 |
| 1 TB+ | 建议 rsync + 停机窗口 |
你可以直接告诉我:
我可以给你精确到命令级别的迁移方案。