温馨提示×

linux gitlab怎样备份恢复

小樊
32
2026-09-25 18:13:59
栏目: 智能运维

下面按常见场景给你讲一下 Linux 上 GitLab 的备份与恢复,以 官方 Omnibus GitLab 为例(最常用)。如果你用的是 Docker 或源码安装,可以告诉我,我再补充。


一、GitLab 备份(Backup)

1. 创建备份

在 GitLab 服务器上执行:

sudo gitlab-backup create

老版本命令可能是:

sudo gitlab-rake gitlab:backup:create

备份文件默认在:

/var/opt/gitlab/backups/

文件名类似:

1690000000_2023_07_22_16.0.0_gitlab_backup.tar

2. 备份包含的内容

✅ 包含:

  • 仓库(Git repos)
  • 数据库(PostgreSQL)
  • 上传文件
  • CI/CD 数据

❌ 不包含:

  • GitLab 配置文件
  • SSL 证书
  • Redis / 系统配置

3. 手动备份配置文件(非常重要)

sudo cp /etc/gitlab/gitlab.rb /backup/gitlab.rb.bak
sudo cp -R /etc/gitlab/ssl /backup/ssl.bak

4. 自动备份(可选)

编辑:

sudo crontab -e

示例(每天 2 点):

0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1

二、GitLab 恢复(Restore)

⚠️ 恢复前注意

  • GitLab 版本必须 完全一致
  • 会覆盖现有数据
  • 建议先停服务

1. 停止相关服务

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

(老版本可能是 unicorn)


2. 恢复备份

sudo gitlab-backup restore BACKUP=1690000000_2023_07_22_16.0.0

只写时间戳部分,不要写 _gitlab_backup.tar


3. 恢复配置文件

sudo cp /backup/gitlab.rb.bak /etc/gitlab/gitlab.rb
sudo gitlab-ctl reconfigure

4. 启动 GitLab

sudo gitlab-ctl start

5. 检查状态

sudo gitlab-ctl status
sudo gitlab-rake gitlab:check SANITIZE=true

三、Docker GitLab 备份(简要)

docker exec -it gitlab gitlab-backup create

恢复类似,但需挂载同一 volumes。


四、常见问题

❓ 恢复后 500 错误

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

❓ 版本不一致

不能恢复,必须重装同版本 GitLab。


五、推荐备份策略

  • 每日备份
  • 备份文件异地存储(OSS / NFS)
  • 定期演练恢复

如果你愿意,可以告诉我:

  • GitLab 安装方式(Omnibus / Docker / K8s)
  • 版本号
  • 是否迁移服务器

我可以直接给你可执行的完整命令脚本。

0 踩