在 Debian 上迁移 GitLab 数据,常见有 同版本迁移 和 跨版本/跨服务器迁移 两种场景。下面给你一套最稳妥、官方推荐的做法。
sudo gitlab-rake gitlab:env:info
⚠️ 目标机器 GitLab 版本必须 ≥ 源机器版本
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:create
备份文件位置:
/var/opt/gitlab/backups/
文件名类似:
1699000000_2023_11_03_16.5.1_gitlab_backup.tar
scp /var/opt/gitlab/backups/*.tar root@新服务器IP:/var/opt/gitlab/backups/
确保:
sudo chown git:git /var/opt/gitlab/backups/*.tar
恢复命令:
sudo gitlab-rake gitlab:backup:restore BACKUP=1699000000_2023_11_03_16.5.1
只写时间戳部分,不要
.tar
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
GitLab 备份 不包含配置文件,需手动拷贝:
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
拷贝到新服务器同样位置,然后:
sudo gitlab-ctl reconfigure
⚠️ 不拷 gitlab-secrets.json 会导致:
| 类型 | 备份命令 |
|---|---|
| Omnibus | gitlab-rake gitlab:backup:create |
| Docker | docker exec -t gitlab gitlab-rake gitlab:backup:create |
如果你 只想要代码仓库:
/var/opt/gitlab/git-data/repositories
但不推荐,会丢:
❌ 跨大版本直接恢复
✅ 先升级源或目标到相同版本
❌ 忘记拷贝 gitlab-secrets.json
✅ 必须一起迁移
❌ 恢复时 GitLab 在运行
✅ 先停服务
sudo gitlab-rake gitlab:check SANITIZE=true
如果你愿意,可以告诉我:
我可以给你一对一迁移命令。