在 Linux 上配置 GitLab 备份,官方推荐的方式是使用 GitLab 自带的备份工具。下面按 最常见、最稳妥 的方式一步步说明(适用于 Omnibus 版 GitLab,最常见)。
sudo gitlab-backup create
旧版本命令可能是:
sudo gitlab-rake gitlab:backup:create
执行完成后,备份文件会生成在:
/var/opt/gitlab/backups/
文件名类似:
1740000000_2025_03_20_gitlab_backup.tar
sudo crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1
✅ CRON=1 的作用:
默认备份包括:
✅ Git 仓库
✅ 数据库(PostgreSQL)
✅ 附件(uploads)
✅ CI/CD 产物
✅ LFS 文件
❗ 不包含以下内容(需单独备份):
| 内容 | 路径 |
|---|---|
| GitLab 配置文件 | /etc/gitlab/gitlab.rb |
| SSH host keys | /etc/ssh/ |
| TLS 证书 | /etc/gitlab/ssl/ |
| Secret 数据 | /etc/gitlab/gitlab-secrets.json |
sudo tar czf /var/opt/gitlab/backups/gitlab-config-$(date +%F).tar.gz \
/etc/gitlab/gitlab.rb \
/etc/gitlab/gitlab-secrets.json \
/etc/gitlab/ssl
编辑配置文件:
sudo vim /etc/gitlab/gitlab.rb
修改或添加:
gitlab_rails['backup_path'] = "/data/gitlab/backups"
然后执行:
sudo gitlab-ctl reconfigure
gitlab_rails['backup_keep_time'] = 604800 # 7 天(秒)
然后:
sudo gitlab-ctl reconfigure
⚠️ 恢复会覆盖现有数据
sudo gitlab-backup restore BACKUP=1740000000_2025_03_20
然后恢复配置:
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
✅ 每天自动备份
✅ 备份文件同步到远程存储(NFS / S3 / rsync)
✅ 定期测试恢复流程
✅ 备份 /etc/gitlab
✅ 监控磁盘空间
df -h
sudo chown -R git.git /var/opt/gitlab/backups
GitLab 版本必须一致或兼容
可以告诉我:
我可以给你 对应环境的备份方案。
需要我帮你写 完整备份 + 自动上传到远程服务器脚本 吗?