迁移 Debian 上的 GitLab 通常有两种常见场景:
1️⃣ 同机或跨机迁移(保留数据)
2️⃣ 版本升级 + 迁移
下面以 官方 Omnibus GitLab 为例,给你一套最稳妥、可回滚的迁移方案。
dpkg -l | grep gitlab
gitlab-ee / gitlab-ce ✅ Omnibus(推荐)gitlab-rake gitlab:env:info
gitlab-rake gitlab:backup:create
备份文件位置:
/var/opt/gitlab/backups/
文件名类似:
1234567890_2026_01_21_gitlab_backup.tar
✅ 这个文件 + /etc/gitlab + /var/opt/gitlab 是完整迁移的核心
# 停止 GitLab
gitlab-ctl stop
# 打包配置和数据
tar -czvf gitlab-full-backup.tar.gz \
/etc/gitlab \
/var/opt/gitlab
拷贝到新服务器:
scp gitlab-full-backup.tar.gz gitlab_backup.tar new-server:/root/
⚠️ 版本必须一致,否则可能失败
apt-get update
apt-get install -y gitlab-ee # 或 gitlab-ce
安装后先不要初始化配置。
# 解压
tar -xzvf gitlab-full-backup.tar.gz -C /
# 恢复备份
gitlab-ctl reconfigure
gitlab-ctl stop
# 恢复数据库和仓库
gitlab-rake gitlab:backup:restore BACKUP=1234567890_2026_01_21
gitlab-ctl reconfigure
gitlab-ctl start
gitlab-rake gitlab:check
适合:
gitlab-rake gitlab:backup:create
gitlab-rake gitlab:backup:restore
| 项目 | 建议 |
|---|---|
| OS 版本 | Debian 11 → 12 可行 |
| GitLab 版本 | 先升级到目标系统支持版本 |
| PostgreSQL | Omnibus 自带,不建议手动迁移 |
| 端口 | 确认 80 / 443 / 22 |
gitlab-ctl reconfigure
gitlab-ctl restart
chown -R git:git /var/opt/gitlab/git-data
/etc/gitlab/gitlab.rb 中:gitlab_rails['gitlab_shell_ssh_port'] = 22
✅ 先迁移同版本 → 再升级
升级路径示例:
14.x → 15.x → 16.x → 17.x
/etc/gitlab/gitlab.rb你可以直接贴出:
gitlab-rake gitlab:env:info
cat /etc/os-release