Debian上GitLab备份与恢复实操指南
一 环境准备与关键说明
二 备份步骤
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-rake gitlab:backup:create
# 或(新版本也支持)
sudo gitlab-backup create
sudo vim /etc/gitlab/gitlab.rb
# 示例:改目录与保留7天(604800秒)
gitlab_rails['backup_path'] = "/data/gitlab/backups"
gitlab_rails['backup_keep_time'] = 604800
# 使配置生效
sudo gitlab-ctl reconfigure
# 系统级 crontab
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
# 或
0 2 * * * /opt/gitlab/bin/gitlab-backup create
sudo cp /etc/gitlab/gitlab.rb /backup/gitlab.rb.$(date +%F)
sudo cp /etc/gitlab/gitlab-secrets.json /backup/gitlab-secrets.json.$(date +%F)
sudo rsync -a /etc/gitlab/ssl/ /backup/gitlab-ssl.$(date +%F)/
scp /var/opt/gitlab/backups/*.tar user@remote:/path/to/remote/backups/
以上步骤覆盖默认路径、配置自定义、定时任务与配置/证书单独备份等常见需求。
三 恢复步骤
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# 编号示例:1712345678_2025_04_01_13.2.3_gitlab_backup.tar
sudo gitlab-rake gitlab:backup:restore BACKUP=1712345678_2025_04_01_13.2.3
# 或(新版本也支持)
sudo gitlab-backup restore BACKUP=1712345678_2025_04_01_13.2.3
按提示输入 yes 确认覆盖现有数据。sudo cp /backup/gitlab.rb.YYYY-MM-DD /etc/gitlab/gitlab.rb
sudo cp /backup/gitlab-secrets.json.YYYY-MM-DD /etc/gitlab/gitlab-secrets.json
sudo rsync -a /backup/gitlab-ssl.YYYY-MM-DD/ /etc/gitlab/ssl/
sudo gitlab-ctl reconfigure
sudo gitlab-ctl start
# 或按需
sudo gitlab-ctl restart
# 登录 Web 检查项目、仓库、用户、密钥、Runner 注册等是否恢复
恢复会覆盖现有数据,务必提前做好当前环境快照或额外备份。
四 常见问题与最佳实践