温馨提示×

linux gitlab怎样恢复数据

小樊
41
2026-09-19 19:12:56
栏目: 智能运维

在 Linux 上恢复 GitLab 数据,通常取决于你之前是否有备份以及 GitLab 的安装方式(Omnibus / 源码 / Docker)。下面按最常见、最安全的方式说明。


一、前提:确认是否有备份

GitLab 默认备份目录:

/var/opt/gitlab/backups

查看是否有备份文件:

ls -lh /var/opt/gitlab/backups

备份文件一般类似:

1690000000_2023_07_22_15.11.0_gitlab_backup.tar

二、使用官方备份恢复(推荐 ✅)

1. 停止相关服务(避免数据写入)

gitlab-ctl stop unicorn
gitlab-ctl stop puma
gitlab-ctl stop sidekiq

如果是老版本可能是 unicorn,新版本是 puma


2. 恢复备份(Omnibus 安装)

gitlab-rake gitlab:backup:restore BACKUP=1690000000_2023_07_22_15.11.0

⚠️ 注意:

  • BACKUP= 只写 时间戳前缀
  • 不要写 .tar

3. 恢复配置文件(非常重要)

备份中通常不包含 /etc/gitlab

手动恢复:

cp /path/to/backup/gitlab.rb /etc/gitlab/gitlab.rb
cp /path/to/backup/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json

然后:

gitlab-ctl reconfigure

4. 启动 GitLab

gitlab-ctl start

5. 检查状态

gitlab-rake gitlab:check SANITIZE=true

三、Docker 方式恢复

1. 拷贝备份进容器

docker cp 1690000000_gitlab_backup.tar gitlab:/var/opt/gitlab/backups/

2. 进入容器

docker exec -it gitlab bash

3. 恢复

gitlab-rake gitlab:backup:restore BACKUP=1690000000

四、没有备份?还能恢复吗?

❌ 没有备份 = 基本无法恢复仓库数据

但以下情况可能还有救:

1. 磁盘未损坏,只是服务坏了

gitlab-ctl reconfigure
gitlab-ctl restart

2. 误删仓库目录

路径:

/var/opt/gitlab/git-data/repositories

如果有:

  • 文件系统快照(LVM / btrfs / ZFS)
  • 云盘快照
  • 服务器镜像

✅ 可直接挂载恢复

3. 数据库还在

/var/opt/gitlab/postgresql

可尝试专业数据恢复(风险高)


五、恢复后常见问题

1. SSH Key 丢失

gitlab-rails console

重新生成或让用户重新添加

2. Runner 失联

重新注册:

gitlab-runner register

3. 版本不一致

⚠️ 备份只能恢复到相同或更高版本 不能跨大版本降级


六、建议(防再次丢失)

# 每天自动备份
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

并定期:

  • 备份 /etc/gitlab
  • 备份到异地(OSS / S3)

如果你能告诉我:

  • GitLab 版本
  • 安装方式
  • 整个服务器崩溃还是误删项目

我可以给你更精确的一步一步命令

0