GitLab 备份所有仓库(自动克隆)

一、准备工作

1. 环境要求

  • 已安装 Git(版本 2.10+)
  • 本地磁盘空间充足(根据仓库总大小预估)
  • 已配置 SSH 密钥到 GitLab(推荐方式)

2. 获取 GitLab API 访问权限

  1. 登录 GitLab,点击右上角头像 → Settings
  2. 左侧菜单选择 Access Tokens
  3. 创建 Token:
    • 名称:如 backup
    • 权限:至少勾选 api
    • 记录生成的 Token(仅显示一次)

二、克隆全部仓库的方法

使用 Shell 脚本

bash 复制代码
#!/bin/bash
GITLAB_URL="http://192.168.0.224:1110"
TOKEN="glpat-N9HX9-XUpbErhxnB9311"
TARGET_DIR="/media/nihao/gitcore/gitlab_repos"

mkdir -p $TARGET_DIR && cd $TARGET_DIR
curl -s --header "PRIVATE-TOKEN: $TOKEN" "$GITLAB_URL/api/v4/projects?per_page=1000" | 
  jq -r '.[].ssh_url_to_repo' |
  while read repo; do
    git clone --mirror "$repo"
  done

执行步骤:

  1. 保存脚本为 clone_all.sh

  2. 安装依赖工具:

    bash 复制代码
    sudo apt install jq  # Ubuntu/Debian
  3. 修改脚本中的 GITLAB_URL 和 TOKEN, TARGET_DIR是保存的本地路径

  4. 执行脚本:

    复制代码
    chmod +x clone_all.sh
    ./clone_all.sh

三、ip地址变更(其他)

gitlab服务器更换新的ip地址后,拉取代码的地址ip没有自动改变,会导致无法拉取代码。解决方法四修改下配置文件中的ip地址即可。

修改gitlab配置文件gitlab.yml

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

修改gitlab.rb

vi /etc/gitlab/gitlab.rb

重启gitlab服务

sudo gitlab-ctl restart

四、声明

本文档旨在提供技术参考,由于技术更新迭代快且编者水平有限,内容可能存在疏漏或表述不当之处。

若您在阅读过程中发现任何错误、疑问或改进建议,欢迎评论

我将及时核实并优化内容,感谢您的支持与包容!

相关推荐
极小狐1 天前
极狐GitLab万人并发架构实践,大规模组织的扩容路线图
架构·gitlab·极狐gitlab
Lvan的前端笔记2 天前
GitLab CI 环境变量整理
ci/cd·gitlab
李迟3 天前
CICD实例:解决GitLab Runner无法执行CICD问题
gitlab
hanjq_code5 天前
gitlab本地文件 跨分支 忽略改动 不提交
gitlab
极小狐5 天前
极狐GitLab集群高可用方案,多节点架构与故障自愈实践
架构·gitlab·高可用·极狐gitlab
极小狐6 天前
极狐GitLab主备同步延迟治理,复制滞后监控与优化方法
gitlab·极狐gitlab·geo容灾
极小狐6 天前
跨项目流水线报 404 Not Found?CI_JOB_TOKEN 允许名单 9 步排查
ci/cd·gitlab·devops·权限管理·流水线·极狐gitlab·作业令牌
极小狐7 天前
极狐GitLab双机热备搭建指南,主机备机部署与切换实操
gitlab·高可用·极狐gitlab
有同事要进步13 天前
如何在github或者是gitlab上创建空文件
gitlab·github
GoodStudyAndDayDayUp15 天前
gitlab私有化跑CICD
gitlab·gitlab私有化跑cicd