下面分几种常见场景,说明在 Debian 上运行的 GitLab 如何恢复数据。如果你能补充是 Omnibus 安装还是源码/Docker,我可以给你更精确的命令。
/var/opt/gitlab/backups/)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
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true
适用于:
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
⚠️ 缺点:
/var/opt/gitlab/backups/
sudo gitlab-psql gitlabhq_production < backup.sql
⚠️ 风险较高,一般不推荐单独操作
如果你是用 Docker:
docker exec -it gitlab gitlab-backup restore BACKUP=timestamp
并恢复:
docker cp gitlab-secrets.json gitlab:/etc/gitlab/
✅ 仍可尝试恢复的内容
.git 目录)❌ 基本无法恢复
# 先备份当前状态
sudo gitlab-backup create
sudo cp -a /etc/gitlab /etc/gitlab.bak
sudo cp -a /var/opt/gitlab /var/opt/gitlab.bak
你可以直接告诉我:
我可以给你一步一步精确命令,甚至帮你判断是否能救回数据。