在 Debian 上“迁移 GitLab 仓库”通常有几类场景,下面按最常见、最安全的方式给你讲清楚,你可以对照自己的需求选。
如果你是 Debian 上用 Omnibus 安装的 GitLab,这是最标准的方法。
sudo gitlab-rake gitlab:backup:create
生成的文件在:
/var/opt/gitlab/backups/
scp /var/opt/gitlab/backups/xxxx_gitlab_backup.tar 新服务器:/var/opt/gitlab/backups/
# 例如原版本 16.5.1
sudo EXTERNAL_URL="https://gitlab.example.com" apt-get install gitlab-ee=16.5.1-ce.0
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=xxxx
sudo gitlab-ctl restart
✅ 用户、仓库、CI、Issues 全部迁移
如果你只是想把代码仓库搬走:
git clone --mirror git@old-gitlab:group/project.git
cd project.git
git push --mirror git@new-gitlab:group/project.git
✅ 分支、tag、所有引用都会迁移
docker exec -t gitlab gitlab-rake gitlab:backup:create
docker cp gitlab:/var/opt/gitlab/backups ./backups
docker cp backups/xxx.tar gitlab:/var/opt/gitlab/backups/
docker exec -t gitlab gitlab-rake gitlab:backup:restore BACKUP=xxx
⚠️ 不能直接跨大版本恢复(如 15 → 17)
正确顺序:
15.x → 16.x → 17.x
每一步都要先恢复再升级。
❌ 忘记迁移 /etc/gitlab/gitlab.rb
✅ 要一起拷贝并 gitlab-ctl reconfigure
❌ 权限不对
✅ 备份文件权限应为 git:git
为了给你更精确的方案,我可以帮你确认:
我可以按你的环境写一步一步命令。