首页主机资讯ubuntu gitlab项目迁移攻略

ubuntu gitlab项目迁移攻略

时间2025-11-25 12:56:04发布访客分类主机资讯浏览1406
导读:Ubuntu 下 GitLab 项目迁移攻略 一 迁移总览与前置检查 迁移方式选择 标准方式:使用官方备份与恢复(推荐),迁移完整数据(仓库、议题、合并请求、用户与权限、CI/CD 等)。 仅迁移代码:通过 API 遍历项目,使用 gi...

Ubuntu 下 GitLab 项目迁移攻略

一 迁移总览与前置检查

  • 迁移方式选择
    • 标准方式:使用官方备份与恢复(推荐),迁移完整数据(仓库、议题、合并请求、用户与权限、CI/CD 等)。
    • 仅迁移代码:通过 API 遍历项目,使用 git clone --mirror 批量镜像到新实例,适合跨版本或跨平台迁移。
  • 版本与一致性
    • 源与目标 GitLab 版本需保持一致(如 14.8.2),否则恢复易失败;如需升级,建议先迁移成功后再升级目标实例。
    • 备份时 GitLab 需处于运行状态;恢复操作会清空当前数据,务必先做好备份。
  • 关键文件与路径
    • 备份归档:默认 /var/opt/gitlab/backups/1658368484_2022_07_21_14.8.2_gitlab_backup.tar
    • 机密与配置:/etc/gitlab/gitlab-secrets.json(必须一致,涉及密码、密钥、2FA)、/etc/gitlab/gitlab.rb(域名、端口、存储路径等)。
    • 备份配置:可在 /etc/gitlab/gitlab.rb 中设置备份路径与保留时间(如 gitlab_rails[‘backup_path’]、gitlab_rails[‘backup_keep_time’])。

二 标准迁移步骤 Omnibus 包安装

  • 源服务器备份
    • 查看版本:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
    • 创建备份:gitlab-rake gitlab:backup:create(归档生成于 /var/opt/gitlab/backups
    • 拷贝关键文件:将备份归档与 /etc/gitlab/gitlab.rb/etc/gitlab/gitlab-secrets.json 一并拷贝到目标服务器(建议同目录结构)。
  • 目标服务器准备
    • 安装与源一致的 GitLab 版本(如 gitlab-ce_14.8.2-ce.0_amd64.deb),执行 dpkg -i 后 gitlab-ctl reconfigure。
    • 将备份归档放入目标备份目录(默认 /var/opt/gitlab/backups),必要时 chown git:git 并设置权限(如 0644)。
    • 用源服务器的 gitlab-secrets.json 覆盖目标的同名文件,保持 gitlab.rb 中的域名/端口等配置一致或按需调整。
  • 目标服务器恢复
    • 停止连接服务:gitlab-ctl stop unicorn & & gitlab-ctl stop sidekiq
    • 执行恢复(BACKUP=后填时间戳前缀,不含 .tar):gitlab-rake gitlab:backup:restore BACKUP=1658368484_2022_07_21_14.8.2
    • 启动服务:gitlab-ctl start;如配置了自定义备份目录,先 gitlab-ctl reconfigure 使路径生效。

三 Docker 部署的迁移要点

  • 备份
    • 进入容器执行:docker exec -t < 容器名> gitlab-backup create
    • 备份归档位于容器内 /var/opt/gitlab/backups,宿主机挂载目录通常为 /srv/gitlab/data/backups;同时备份 /srv/gitlab/config/(内含 gitlab.rb 与 gitlab-secrets.json)。
  • 恢复
    • 将归档与 config 目录拷贝到目标宿主机相同路径;必要时先停止容器:docker stop < 容器名>
    • 启动容器(挂载 data、logs、config),进入容器执行恢复:gitlab-backup restore BACKUP=< 时间戳前缀>
    • 重启容器:docker start < 容器名> ;如涉及域名或端口变更,更新 config/gitlab.rb 后重新创建/启动容器。

四 仅迁移代码库的替代方案

  • 适用场景
    • 跨大版本迁移、只迁移仓库(不含议题/MR/权限)、外部托管或精简迁移。
  • 快速做法
    • 在源 GitLab 生成 Personal Access Token(权限至少 api),使用脚本遍历项目并以 git clone --mirror 镜像到本地;随后推送到目标 GitLab(若不存在则先通过 API 创建项目)。
    • 示例脚本要点:curl 获取项目列表(ssh_url_to_repo、path_with_namespace),循环 git clone --mirror;推送前检查目标项目是否存在,不存在则 POST /api/v4/projects 创建,再 git push --mirror。

五 常见问题与排错清单

  • 版本不一致导致恢复失败
    • 两端版本必须一致;如需升级,先迁后升,或先在源端升级到目标版本再备份。
  • 403/402 或登录异常
    • 核对 /etc/gitlab/gitlab-secrets.json 是否从源端完整覆盖到目标端;该文件关系到加密密钥与会话安全。
  • 备份归档无法恢复或权限错误
    • 确认归档位于正确目录(默认 /var/opt/gitlab/backups),属主为 git:git,权限建议 0644;恢复时 BACKUP= 只填时间戳前缀。
  • 自定义备份目录未生效
    • /etc/gitlab/gitlab.rb 设置 gitlab_rails[‘backup_path’] 后执行 gitlab-ctl reconfigure;恢复前确保目录存在且权限正确。
  • 恢复后项目缺失或为空
    • 恢复会清空现有数据;确认使用了正确的备份归档,且恢复命令执行成功无报错;必要时检查 Nginx/SSH 访问与仓库存储路径配置。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu gitlab项目迁移攻略
本文地址: https://pptw.com/jishu/755470.html
ubuntu能否fetchlinux软件 ubuntu gitlab自定义脚本编写

游客 回复需填写必要信息