迁移 Linux 上的 GitLab 通常分为 同版本迁移 和 跨版本/跨服务器迁移 两种场景。下面我按最常见、最安全的官方推荐方式来讲,并补充其他可选方案。
适用于:
sudo gitlab-rake gitlab:backup:create
备份文件默认在:
/var/opt/gitlab/backups/
文件名类似:
1690000000_2023_07_22_15.11.0_gitlab_backup.tar
⚠️ 该备份 不包含 配置文件(如 gitlab.rb、ssl)
scp /var/opt/gitlab/backups/*.tar user@new-server:/var/opt/gitlab/backups/
scp /etc/gitlab/gitlab.rb user@new-server:/etc/gitlab/
scp -r /etc/gitlab/ssl user@new-server:/etc/gitlab/ # 如有
# 示例(Ubuntu)
sudo apt install gitlab-ee=15.11.0-ee.0
确认版本一致:
sudo gitlab-rake gitlab:env:info
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:restore BACKUP=1690000000_2023_07_22_15.11.0
恢复完成后:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
适用于:
dd / rsync / 云镜像✅ 优点:零配置
❌ 缺点:版本锁定,不灵活
如果只是代码和 Issues:
git clone --bare git@old:group/project.git
git push --mirror git@new:group/project.git
⚠️ 不包含 CI、Webhook、部分配置
docker exec -it gitlab gitlab-rake gitlab:backup:create
/var/opt/gitlab/etc/gitlab| 问题 | 说明 |
|---|---|
| 版本不一致 | 必须 ≥ 原版本 |
| 跳过大文件 | 可加 SKIP=uploads |
| 恢复卡住 | 检查磁盘空间 |
| SSH key 丢失 | 需重新配置 |
如果你愿意,可以告诉我:
我可以给你一步一步的定制迁移命令。