在 Linux 上恢复 GitLab 数据,主要取决于你是否有备份以及 GitLab 的安装方式(Omnibus / Docker / 源码)。下面按最常见、最安全的方式给你一个完整恢复流程。
✅ GitLab 版本必须与备份时一致或更高(不能降级)
✅ 恢复会 覆盖当前数据
✅ 建议先在测试环境验证
默认备份路径:
/var/opt/gitlab/backups/
查看备份文件:
ls -lh /var/opt/gitlab/backups/
示例:
1690000000_2023_07_22_gitlab_backup.tar
gitlab-ctl stop puma
gitlab-ctl stop sidekiq
确认状态:
gitlab-ctl status
gitlab-backup restore BACKUP=1690000000_2023_07_22
⚠️ 不要加
.tar,只写时间戳前缀
备份时通常包含:
/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb
恢复方式:
cp /var/opt/gitlab/backups/gitlab-secrets.json /etc/gitlab/
cp /var/opt/gitlab/backups/gitlab.rb /etc/gitlab/ # 如果存在
然后重新加载配置:
gitlab-ctl reconfigure
❗ 不恢复
gitlab-secrets.json会导致:
gitlab-ctl start
检查状态:
gitlab-ctl status
gitlab-rake gitlab:check SANITIZE=true
docker exec -it gitlab bash
gitlab-backup restore BACKUP=timestamp
docker restart gitlab
⚠️ 没有备份 = 无法完整恢复
你可以尝试:
/var/opt/gitlab/git-data/repositories建议:
# 尝试从磁盘恢复
extundelete
testdisk
Backup is from a different version
✅ 解决:
chown -R git:git /var/opt/gitlab/git-data
# 定时备份
0 2 * * * /opt/gitlab/bin/gitlab-backup create
备份到远程:
你可以直接告诉我:
我可以给你 精确到命令级别 的恢复方案。