使用远程存储库还原orgin存储库

时间:2012-02-23 19:29:53

标签: git repository restore

我正在尝试在标准备份之外的git部署中构建一些冗余。从理论上讲,使用我创建并链接/同步到使用git remote的存储库来恢复多个用户克隆的存储库似乎很容易。

过去我遇到过备份磁带问题,要么是备份不好,要么是必须从非现场检索磁带。我正在寻找远程可能性,即为丢失的仓库托管本地分支机构的服务器遭遇了灾难性的故障,我需要备份一个大的源代码库并在短时间内以最小的中断运行。

这里的想法是维护一个离线服务器,该服务器只是在从生产框接收更新时闲置。当生产箱崩溃时,我会将服务器别名为备份服务器并制作“丢失”远程分支的本地副本

到目前为止,我正在考虑每个存储库的恢复路径:

- grep for the dead servers alias
- Parse for the remote branch names
- checkout the remote branches to the recovery repository
- Remove the dead servers alias

E.G。使用tcsh:

foreach q(git branch -a | grep kaboom-1 | cut -f 2 -d '/'

git checkout -b branch kaboom-1 / branch

git remote rm kaboom

在测试中,这非常有效,但在实验室中进行测试并不总能直接转化为真实世界的可行性。过去有没有人进行过这种类型的恢复,或者你看到这种方法有问题吗?

1 个答案:

答案 0 :(得分:0)

这听起来有点尴尬,因为git有一个很好的备份功能,包含clone和--mirror参数。我会在主仓库上使用git clone --mirror,并且每次将某些东西推送到主仓库时,都会不断更新我的镜像(完全相同)。如果出现繁荣的情况,很容易从一个镜像克隆中克隆一个新的repo并继续进行。

所以就这样做:

git clone --mirror main_repo.git

你想要多次主要回购的克隆镜像。请记住--mirror暗示--bare,因此它们没有像主repo那样的任何工作目录。

如果主仓库中发生了某些事情并且您想要同步镜像,请在每个镜像中执行以下操作:

git remote update

当此命令完成时,此裸镜像克隆再次与主存储库相同。