使用Grokmirror镜像服务(1)——镜像内核Git仓库

Grokmirror是一个Python编写的工具,用于同步和镜像Linux内核源码仓库集群。它通过监测manifest文件,自动更新本地镜像,减少带宽和存储浪费。本文介绍了Grokmirror的工作原理、安装、配置和使用,包括如何用crond定时运行以保持同步。
摘要由CSDN通过智能技术生成

目录

需求的提出

开源软件开发和嵌入式软件开发会经常需要使用Linux内核源码。你是否经常会从The Linux Kernel Archives 上下载源码,时间久了,不同版本的源码在本地堆得到处都是,是不是很烦?并且由于大天朝局域网接近断流的出国带宽,经常需要使用内核源码时拽不下来急死人有没有?这个时候总是会想能不能在本地做一个内核镜像,利用空闲时候的带宽同步内核代码,需要时直接从本地checkout需要的版本,方便多了。所幸这个需求并不小众,git的威力就在于它是一个分布式的版本管理系统,所以做个镜像是很轻松的事。

但是。。。

这里有两个问题,内核的git仓库是个“集群”,这意味着:

  1. 几个内核仓库之间可能存在引用关系(通过objects/info/alternates可以查看),例如,待会儿我选择进行同步的arm-soc.git和linux-stable.git就通过objects/info/alternates指向其他仓库。那么同步的时候实际上没有必要同步重复的objects造成带宽和存储空间的浪费。
  2. 当内核的git仓库“集群”中增加了新的仓库时,我们希望能够察觉到这个变化并自动镜像这些新添加的仓库。

以上这两条,也是Grokmirror的作者所指出的,为什么不用Linux的“计划任务”crond定时执行git pull去同步内核仓库的主要原因。更详细的解释戳这里

什么是Grokmirror? grok|korg – grokmirror is mirror of korg :)

啰嗦这么多,那什么是Grokmirror呢?它是一个用Python开发的Linux内核源码仓库“集群”的同步工具,使用GitPython作为与Git的接口。Grokmirror使用一个manifest (清单)文件登记源码仓库“集群”中需要镜像的仓库,镜像仓库群(以下简称Mirror)根据用户配置定期地去poll被镜像仓库群(以下简称Master)的manifest文件,并对比本地manifest文件的记录数和各条记录的时间戳,如果Master有新加仓库记录,或者Master的manifest文件中有更新时间更迟的记录,那么Mirror就会自动更新本地的manifest,使其与Master保持同步,并且根据更新后的manifest,自动同步各个仓库。

工作流程

一图胜千言,下面来个时序图描述下大致的工作流程

Created with Raphaël 2.1.0 Master Master Mirror Mirror repo c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值