CentOS上GitLab备份恢复策略
使用GitLab提供的Rake命令创建全量备份,涵盖Git仓库、数据库、用户/用户组信息、密钥及权限等核心数据。默认备份文件存储在/var/opt/gitlab/backups目录,文件名格式为TIMESTAMP_gitlab_backup.tar(如1716800000_2025_09_24_15.0.0_gitlab_backup.tar)。
执行命令:sudo gitlab-rake gitlab:backup:create
通过Linux的crontab工具设置周期性备份,避免人工遗漏。例如,配置每天凌晨2点执行备份任务:
编辑crontab:crontab -e,添加以下行:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create(路径需根据GitLab安装位置调整)
修改/etc/gitlab/gitlab.rb配置文件,自定义备份参数以适应业务需求:
gitlab_rails['backup_path']:设置备份存储路径(如/data/gitlab/backups);gitlab_rails['backup_archive_permissions']:设置备份文件权限(如0644,确保可读性);gitlab_rails['backup_keep_time']:设置备份保留时间(如604800秒=7天,自动清理过期备份)。sudo gitlab-ctl reconfigure使配置生效,并重启GitLab服务:sudo gitlab-ctl restart定期清理过期备份以释放存储空间,可通过find命令实现。例如,删除/var/opt/gitlab/backups目录下超过7天的备份文件:
find /var/opt/gitlab/backups -type f -mtime +7 -exec rm -rf {} \;
sudo gitlab-ctl stop unicornsudo gitlab-ctl stop sidekiq1716800000_2025_09_24_15.0.0_gitlab_backup.tar)复制到备份目录(如/var/opt/gitlab/backups);gitlab-rake命令指定备份文件的时间戳(BACKUP_TIMESTAMP)进行恢复,例如:sudo gitlab-rake gitlab:backup:restore BACKUP=1716800000_2025_09_24_15.0.0yes继续恢复完成后,启动GitLab所有服务:sudo gitlab-ctl start(或sudo gitlab-ctl restart重启所有服务),确保服务正常运行
/var/log/gitlab/目录),确认无报错信息