下面以 CentOS 系统迁移 GitLab 为例,给你一套完整、可操作的迁移方案(适用于跨服务器、同版本或相近版本迁移)。
gitlab-rake gitlab:env:info
# 或
rpm -qa | grep gitlab
✅ 强烈建议:源服务器和目标服务器 GitLab 版本一致
cat > /etc/yum.repos.d/gitlab.repo <<EOF
[gitlab]
name=gitlab
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1
EOF
yum install -y gitlab-ce-x.x.x
安装完成后 先不要启动:
gitlab-ctl stop
gitlab-rake gitlab:backup:create
备份文件位置:
/var/opt/gitlab/backups/
文件名类似:
1234567890_2026_01_21_gitlab_backup.tar
scp /var/opt/gitlab/backups/1234567890_2026_01_21_gitlab_backup.tar root@目标服务器IP:/var/opt/gitlab/backups/
⚠️ 不迁移以下文件,项目、用户、Token 可能异常
tar czf gitlab-config.tar.gz \
/etc/gitlab/gitlab.rb \
/etc/gitlab/gitlab-secrets.json
scp gitlab-config.tar.gz root@目标服务器IP:/tmp/
tar xzf /tmp/gitlab-config.tar.gz -C /
vi /etc/gitlab/gitlab.rb
例如:
external_url 'http://gitlab.newdomain.com'
gitlab-ctl reconfigure
gitlab-rake gitlab:backup:restore BACKUP=1234567890_2026_01_21
⚠️ 不写
_gitlab_backup.tar
恢复时会提示:
gitlab-ctl start
gitlab-ctl status
gitlab-rake gitlab:check
PG::Error
✅ 解决:
gitlab-runner verify
✅ 解决:
/etc/gitlab-runner/config.toml✅ 确认:
ls /var/opt/gitlab/.ssh
| 方式 | 说明 |
|---|---|
| rsync 全盘复制 | 风险高 |
| 虚拟机快照 | 可行 |
| Docker 版 GitLab | 迁移更简单 |
✅ 最稳妥方案
相同版本 GitLab
→ 官方 backup
→ 迁移 gitlab.rb + secrets.json
→ restore
如果你愿意,可以告诉我:
我可以 按你的环境给你定制迁移方案 ✅