温馨提示×

Debian上GitLab的备份与恢复方法是什么

小樊
46
2026-01-09 16:08:43
栏目: 智能运维

Debian上GitLab的备份与恢复方法

一 环境准备与关键说明

  • 适用于使用 Omnibus 包 安装的 GitLab CE/EEDebian 上的备份与恢复;若使用 Docker/Kubernetes,见文末补充。备份命令会生成时间戳归档,默认位于 /var/opt/gitlab/backups,但官方明确提示:备份归档不包含 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 等敏感文件,需单独手动备份;恢复时建议 新旧实例 GitLab 版本一致,避免不兼容。

二 备份步骤

  • 手动创建备份
    • 建议先停止写入密集型组件(可选):sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq
    • 执行备份:sudo gitlab-rake gitlab:backup:create(或新语法 sudo gitlab-backup create)。归档默认写入 /var/opt/gitlab/backups,文件名形如 TIMESTAMP_YYYY_MM_DD_VERSION_gitlab_backup.tar
  • 配置备份路径与保留策略
    • 编辑 /etc/gitlab/gitlab.rb
      • gitlab_rails['backup_path'] = "/data/gitlab/backups"(自定义备份目录)
      • gitlab_rails['backup_keep_time'] = 604800(保留 7 天,单位秒)
      • 可选:gitlab_rails['backup_archive_permissions'] = 0644(归档权限)
    • 使配置生效:sudo gitlab-ctl reconfigure
    • 如自定义了备份目录,需确保目录存在且权限正确(示例:mkdir -p /data/gitlab/backups && chown -R git:git /data/gitlab/backups)。
  • 定时备份与远程拷贝
    • 示例脚本 /var/opt/gitlab/backups/gitlabbak.sh
      #!/bin/bash
      /opt/gitlab/bin/gitlab-rake gitlab:backup:create
      find /var/opt/gitlab/backups -name "*.tar" -type f -mtime +10 -delete
      
    • 加入 crontab(示例:每周一、三、五 08:30 执行):0 8 * * 1,3,5 /bin/sh /var/opt/gitlab/backups/gitlabbak.sh >/dev/null 2>&1
    • 远程备份(示例):scp /var/opt/gitlab/backups/*.tar user@remote:/path/to/backups
    • 重要:另行备份 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json/etc/ssl/(证书)等敏感配置与证书。

三 恢复步骤

  • 准备与版本匹配
    • 在新/目标机器安装同版本 GitLab,先停止相关服务(可选):sudo gitlab-ctl stop unicorn && sudo gitlab-ctl stop sidekiq
    • 将备份归档复制到目标机的备份目录(默认 /var/opt/gitlab/backups),并确保 gitlab.rbgitlab-secrets.json 已就位(与备份时一致)。
  • 执行恢复
    • 按备份文件名中的时间戳或编号恢复(示例):sudo gitlab-rake gitlab:backup:restore BACKUP=1623724635_2021_06_15_13.12.3
    • 恢复过程中会提示确认,通常需要输入 yes 两次;恢复完成后启动服务:sudo gitlab-ctl start(或 sudo gitlab-ctl restart)。
  • 验证
    • 登录 Web 界面,检查 项目/仓库、上传文件、LFS、Pages、CI 工件 等是否完整;核对 用户与权限Runner 注册与配置。

四 常见问题与补充

  • 版本不一致:恢复时若版本不匹配,可能出现错误或功能异常,建议 备份与恢复使用相同版本
  • 备份不包含敏感配置:务必单独备份并妥善存放 gitlab.rbgitlab-secrets.jsonSSL 证书,恢复时一并就位。
  • 定时清理:通过 backup_keep_time 或脚本定期清理旧备份,避免磁盘占满。
  • Docker 部署补充
    • 备份:docker exec -it gitlab gitlab-backup create(归档位于容器内 /var/opt/gitlab/backups,通常挂载到宿主 /srv/gitlab/data/backups
    • 恢复:先将备份文件放入挂载目录,再执行 docker exec -it gitlab gitlab-backup restore BACKUP=文件名

0