Ubuntu中GitLab的备份方法
一 标准备份与定时任务
sudo gitlab-backup create(旧版也可用:sudo gitlab-rake gitlab:backup:create)。建议将备份文件拷贝到外部存储或对象存储以实现异地留存。0 2 * * * /opt/gitlab/bin/gitlab-backup create CRON=1。如需指定自定义备份目录,请先在gitlab.rb中配置gitlab_rails['backup_path']并执行gitlab-ctl reconfigure使配置生效。二 关键配置与保留策略
/etc/gitlab/gitlab.rb中设置gitlab_rails['manage_backup_path'] = true与gitlab_rails['backup_path'] = "/your/path";创建目录并授权(如chown -R git:git /your/path),随后执行gitlab-ctl reconfigure。gitlab_rails['backup_keep_time'] = 604800(单位:秒)设置保留周期,例如604800秒=7天,7776000秒=90天。gitlab_rails['backup_archive_permissions'] = 0644控制备份文件权限。三 高并发与一致性优化
gitlab-backup create STRATEGY=copy,在备份期间对仓库进行文件系统级拷贝,可降低高写入场景下的失败概率。sudo gitlab-ctl stop puma与sidekiq)。使用STRATEGY=copy通常无需停机,但在极端并发下仍建议评估维护窗口。四 备份文件不包含的关键项与异地容灾
.tar归档通过scp/rsync等工具同步到远程服务器或对象存储,实现多副本与灾备。示例:sudo scp /var/opt/gitlab/backups/*.tar user@remote:/path/。gitlab-rake gitlab:check SANITIZE=true、gitlab-rake gitlab:artifacts:check、gitlab-rake gitlab:lfs:check、gitlab-rake gitlab:uploads:check进行完整性校验。五 恢复要点(简版)
gitlab-ctl reconfigure;将备份文件放到配置的backup_path,并确保权限为git:git。sudo gitlab-ctl stop puma与sidekiq(或按实际组件调整)。sudo gitlab-backup restore BACKUP=1686474838_2023_06_11_15.3.2。sudo gitlab-ctl restart,随后运行gitlab-rake gitlab:check等巡检命令确认恢复成功。