温馨提示×

Debian GitLab如何恢复数据

小樊
50
2026-07-18 13:58:49
栏目: 智能运维

下面分几种常见场景,说明在 Debian 上运行的 GitLab 如何恢复数据。如果你能补充是 Omnibus 安装还是源码/Docker,我可以给你更精确的命令。


一、最常见:使用 GitLab 官方备份恢复(推荐)

1️⃣ 前提条件

  • 已开启备份(默认路径:/var/opt/gitlab/backups/
  • 恢复的 GitLab 版本必须与备份时一致或兼容
  • 使用 Omnibus 安装(最常见)

2️⃣ 恢复步骤(Omnibus GitLab)

① 停止相关服务

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

如果是老版本,可能是 unicorn 而不是 puma

② 复制备份文件

sudo cp 1670000000_2023_01_01_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git.git /var/opt/gitlab/backups/*.tar

③ 执行恢复命令

sudo gitlab-backup restore BACKUP=1670000000_2023_01_01

注意:不要加 .tar 后缀

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

备份时通常包含:

/etc/gitlab/gitlab-secrets.json
/etc/gitlab/gitlab.rb

恢复:

sudo cp gitlab-secrets.json /etc/gitlab/
sudo cp gitlab.rb /etc/gitlab/
sudo gitlab-ctl reconfigure

⑤ 重启 GitLab

sudo gitlab-ctl restart

⑥ 检查状态

sudo gitlab-rake gitlab:check SANITIZE=true

二、只恢复 Git 仓库数据(不恢复数据库)

适用于:

  • 数据库损坏
  • 只想恢复代码

方法

GitLab 仓库默认在:

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

恢复方式:

sudo cp -a repositories /var/opt/gitlab/git-data/
sudo chown -R git.git /var/opt/gitlab/git-data/repositories

然后:

sudo gitlab-rake gitlab:import:repos

⚠️ 缺点:

  • 没有 issue、MR、用户、CI 数据

三、数据库单独恢复(PostgreSQL)

1️⃣ 查看数据库备份

/var/opt/gitlab/backups/

2️⃣ 手动恢复 PostgreSQL(高级)

sudo gitlab-psql gitlabhq_production < backup.sql

⚠️ 风险较高,一般不推荐单独操作


四、Docker / Kubernetes 场景(简要)

如果你是用 Docker:

docker exec -it gitlab gitlab-backup restore BACKUP=timestamp

并恢复:

docker cp gitlab-secrets.json gitlab:/etc/gitlab/

五、没有备份怎么办?

仍可尝试恢复的内容

  • Git 仓库(.git 目录)
  • CI 产物(部分)
  • 上传文件

基本无法恢复

  • Issue
  • Merge Request
  • 用户权限
  • CI 历史

六、恢复前强烈建议

# 先备份当前状态
sudo gitlab-backup create
sudo cp -a /etc/gitlab /etc/gitlab.bak
sudo cp -a /var/opt/gitlab /var/opt/gitlab.bak

七、我可以继续帮你

你可以直接告诉我:

  1. GitLab 安装方式(Omnibus / Docker / 源码)
  2. Debian 版本
  3. GitLab 版本
  4. 丢失了哪些数据(仓库 / 数据库 / 全部)
  5. 是否有 备份文件

我可以给你一步一步精确命令,甚至帮你判断是否能救回数据。

0