1. 为什么你的GitLab备份可能“白忙活”?
如果你用过GitLab自带的备份命令,大概率见过这个让人心头一紧的警告:“Your gitlab.rb and gitlab-secrets.json files contain sensitive data and are not included in this backup.” 我见过不少团队,吭哧吭哧跑完备份,把生成的tar包当宝贝一样存起来,等到服务器真出问题需要恢复时,才发现项目代码是回来了,但用户登录不了、CI/CD流水线全报错、各种集成配置全丢了,整个GitLab几乎处于“半瘫痪”状态。问题就出在,他们只备份了“数据”,却忘了备份“灵魂”。
这个“灵魂”,就是那两个看似不起眼的配置文件:gitlab.rb 和 gitlab-secrets.json。你可以把GitLab想象成一个精密的保险箱。gitlab-rake gitlab:backup:create 这个命令,它只负责把保险箱里的金银财宝(你的仓库代码、Issue、合并请求、CI日志等数据)打包封存。但打开保险箱的密码锁(gitlab-secrets.json里的加密密钥),以及保险箱放在哪个房间、墙上刷什么颜色漆、连接了哪些报警器(gitlab.rb里的全部系统配置),它一概不管。没有密码和房间图纸,你就算搬回来一个一模一样的保险箱,也打不开,更不知道该怎么用。
所以,一个真正完整、能让你高枕无忧的GitLab备份,必须是 “数据包” + “配置包” 的双重组合。这篇文章,我就以一个踩过坑的“过来人”身份,给你拆解从备份、传输到恢复、验证的每一个实操细节。我会告诉你哪些参数能加速备份,传输大文件时怎么不断线,恢复时遇到报错怎么一步步排查。目标就一个:让你看完就能动手,做一次真正有效的、能救命的备份。
2. 实战第一步:生成完整的备份包
别急着敲命令,我们先花一分钟搞清楚备份到底在干什么。当你执行 sudo gitlab-rake gitlab:backup:create 时,GitLab会依次备份数据库(PostgreSQL)、仓库(Git repositories)、上传的文件(如头像、附件)、CI/CD的构建产物等。这个过程可能会持续几分钟到几小时,取决于你的数据量。
2.1 核心备份命令与加速技巧
最基础的命令就是上面那句。但直接裸跑,可能会遇到备份慢、磁盘空间不足等问题。这里有几个我实测好用的参数:
# 基础命令
sudo gitlab-rake gitlab:backup:create
# 进阶用法:指定备份路径,并跳过某些耗时项
sudo gitlab-rake gitlab:backup:create BACKUP_PATH=/mnt/nas/gitlab_backups SKIP=builds,artifacts
解释一下:
BACKUP_PATH:默认备份到/var/opt/gitlab/backups。我强烈建议你改到一个独立的、空间充足的磁盘


7139

被折叠的 条评论
为什么被折叠?



