温馨提示×

ubuntu gitlab 怎样导出数据

小樊
38
2025-12-08 21:31:57
栏目: 智能运维

Ubuntu 上 GitLab 数据导出的常用方式

在 Ubuntu 上的 GitLab 环境中,导出数据通常分为两类:一是通过管理界面导出单个项目的打包文件(便于迁移到其它实例),二是使用命令行对整个实例做全量备份(便于灾备或迁移整套实例)。下面给出可直接执行的步骤与要点。

方式一 项目级导出与导入(界面操作)

  • 适用场景:将单个项目迁移到另一个 GitLab 实例,保留提交历史、分支、标签、问题、合并请求、Wiki等。
  • 导出步骤
    • 以具有项目访问权限的账号登录 GitLab,进入目标项目。
    • 依次进入:Settings → General → Advanced → Export project,点击Export project发起导出。
    • 导出完成后,页面会出现Download export按钮;若配置了邮件,也会收到下载链接。下载得到以**.tar.gz**结尾的导出包。
  • 导入步骤
    • 在目标实例中创建新项目(空白项目即可)。
    • 进入新项目:Settings → General → Advanced → Import project,选择GitLab export,上传刚才的**.tar.gz**文件并开始导入。
  • 重要限制
    • 版本兼容:自 GitLab 13.0 起,导出包可导入到相差不超过两个小版本的目标实例(例如从 15.9 导出的包可导入 15.7–15.9)。
    • 不会导出的内容(常见):构建产物 Artifacts、流水线日志 Build traces、CI/CD 变量、Webhooks、容器/包仓库镜像、部署密钥、受保护分支的推送规则、安全文件 Secure Files、审批人设置等。
    • 速率限制:项目导出/导入存在速率限制,大数据量项目导出耗时较长属正常。

方式二 实例级备份与导出(命令行全量备份)

  • 适用场景:需要一次性导出整套实例(仓库、数据库、上传等),用于迁移或灾备
  • 备份步骤
    • 查看并记录 GitLab 版本(恢复时必须保持相同版本与类型 CE/EE):cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    • 执行备份(备份文件默认位于 /var/opt/gitlab/backups):sudo gitlab-rake gitlab:backup:create
    • 将备份文件拷贝到安全位置或远程存储:例如 scp /var/opt/gitlab/backups/*.tar user@remote:/path/。
  • 恢复要点(供迁移参考)
    • 在新服务器安装相同版本与类型的 GitLab,先停止相关服务(如 unicorn、sidekiq),将备份放入 /var/opt/gitlab/backups,执行:sudo gitlab-rake gitlab:backup:restore BACKUP=时间戳
    • 同时妥善备份并恢复敏感配置:/etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json,否则可能导致CI/CD 变量、密钥等无法解密或认证失败。
  • 版本与增量
    • 备份/恢复要求完全相同的 GitLab 版本与类型(CE/EE)
    • GitLab 14.9 起支持增量备份/恢复(需企业版 EE)。

方式三 其它导出途径(按需求选择)

  • 仅迁移代码(最快速)
    • 使用本地 Git:git clone --mirror <源仓库URL>;到目标后 git push --mirror <目标URL>。此方式只迁移代码与历史,不包含问题、MR、CI/CD 等元数据。
  • 导入裸仓库(Repository only)
    • 在目标实例选择 Import project → Repository by URL,适用于只需代码迁移的场景。
  • 大规模或跨实例迁移工具
    • 使用 GitLab 官方 Congregate 工具进行批量迁移与映射,适合企业多项目/多实例场景。

实践建议

  • 明确目标:单项目迁移优先用项目导出;整套实例迁移用实例备份
  • 版本策略:无论是项目导出还是实例备份,都尽量保持源与目标版本一致或兼容,避免恢复失败或数据不一致。
  • 完整性校验:项目导出后,核对是否包含所需数据(如Issues/MR/Designs/LFS等);实例备份后,核对备份清单与文件大小,并定期演练恢复流程。

0