将Github仓库镜像同步到自建Git仓库

Using GitHub token to synchronize mirror repository to self git repository

Posted by alovn on April 20, 2021

虽然有自建的Git仓库但使用频率不是很高,一般安全性较高的数据、脚本和代码使用自建的Git仓库,比如salt pillar、jenkinsfile等。平常还是使用Github托管代码,为了安全着想,准备把代码镜像备份一下。

Gitlab或Gitea等自建的平台都提供有Git代码镜像的功能,可以设置每隔一段时间进行一次代码拉取同步。Gitea只能通过帐号密码的方式进行同步,而直接使用帐号密码的话风险比较大,可以使用Github Token按需分配权限。

进入 https://github.com/settings/tokens,创建Token,分配repo的权限后获取Token。然后可以像使用帐号密码的方式一样克隆代码:

1
git clone https://oauth2:<token>@github.com/xxx/xxx.git

这时oauth2就可以当作用户名、token当作密码了。

也可以自己写脚本实现Git代码镜像同步,实现镜像仓库的命令也很简单:

1
2
3
4
5
6
7
8
9
# 初次将要镜像的仓库克隆到本地
git clone --mirror https://github.com/user/repository.git
cd repository

# 拉取更新
git fetch -p origin

# 推送到新的仓库
git push --mirror https://git.lab.org/new-repository.git