[开源工具] gitdump - 批量导出托管 Git 仓库

最近在重新捯饬我的那台群辉 NAS,把备份功能重新整理一下。

突然发现,有很多需要备份的东西,并不是以常见的文件形式保存的,比如 Git 仓库 和 电子邮箱。

完整备份 Git 仓库, 不仅仅是备份文件,同时也要备份提交记录和标签,最好的形式是把远程 Git 仓库克隆到本地的 bare Git 仓库,并定期 fetch。

因此我开发了 gitdump 工具,可以批量读取 Github, Gitea, Gitee 和 Coding 的账户信息,枚举所有用户有权限的 Git 仓库,并以 Git bare 仓库格式,增量备份到本地。

代码地址

开源地址:https://github.com/guoyk93/gitdump

下载地址:https://github.com/guoyk93/gitdump/releases/tag/v1.0.0

使用方法

配置文件

首先准备一个 YAML 格式的配置文件,名叫 config.yaml

# 要导出的目录
dir: repos
# 下载并发数
concurrency: 3
# 账户信息,相同 vendor 可以填写多个条目
accounts:

	# Github
	- vendor: github
	  # username 填写 Github 用户名
	  username: guoyk93
	  # password 填写 Github 的 用户个人令牌
	  # 创建令牌的时候,需要勾选 read:org, read:project, read:user, repo 权限
	  password: xxxxxxxxxxxxxxxxxxxxxx
	  
	# Gitee
	- vendor: gitee
	  # username 填写 Gitee 用户
	  username: guoyk93
	  # password 填写 Giteee 的 用户个人令牌
	  # 创建令牌的时候,需要勾选 projects 权限
	  password: xxxxxxxxxxxxxxxxxxxxxx
	  
	# Gitea
	- vendor: gitea
	  # url 填写你的 Gitea 实例的地址
	  url: https://git.xxxx.com
	  # username 填写 Gitea 用户名
	  username: guoyk
	  # password 填写 Gitea 的 用户个人令牌
	  password: xxxxxxxxxxxxxxxxxxxxxxxx
	  
	# Coding
	- vendor: coding
	  # url 填写你的 Coding 实例访问地址,包含租户子域名
	  url: https://myteam.coding.net
	  # username 填写 Coding 个人令牌用户名,在个人令牌页面可以查看
	  username: 2ejmutP8A
	  # password 填写 Coding 个人令牌
	  password: xxxxxxxxxxxxxxxxxxxxxxxxxx

执行

执行命令

chmod +x gitdump
./gitdump -conf config.yaml

gitdump 工具就会枚举你的账户有权限访问的所有 Git 仓库,备份到本地 repos 目录下,建立对应的 Git bare 仓库文件夹,并使用 git fetch -f --tags 等价命令,拉取最新代码。

其他

基于同样的理由,我也做了一个 imapdump 工具,用于批量备份邮件并保存到本地的 .eml 文件中,下一篇文章介绍

你可能感兴趣的:(Golang,git,开源,github)