我想知道是否有一个简单的方法,即像一个简单的cron作业,定期拉从远程git存储库到本地只读镜像备份的目的?通过拉动来镜像git存储库?
理想情况下,它会拉所有的分支和标签,但主/行李箱/头就足够了。
我只是需要一种方法来确保如果主git服务器死亡,我们有一个备份位置,我们可以手动故障转移到。
我想知道是否有一个简单的方法,即像一个简单的cron作业,定期拉从远程git存储库到本地只读镜像备份的目的?通过拉动来镜像git存储库?
理想情况下,它会拉所有的分支和标签,但主/行李箱/头就足够了。
我只是需要一种方法来确保如果主git服务器死亡,我们有一个备份位置,我们可以手动故障转移到。
首先创建的镜像
git clone --mirror [email protected]:repo.git
然后设置一个cron作业是这样的:
*/1 * * * * gitbackup cd /backup/repo.git && git fetch -q --tags
这将备份每分钟的变更。也许你不想经常这样做。
你有直接访问服务器吗?那么你可以只是rsync
.git
目录
正如安德鲁指出的,每个git仓库的克隆都是仓库的完整备份。也就是说,如果您想要自动备份到特定计算机的某些内容,您可以在备份服务器上创建一个裸回购,并将其与所有需要备份的分支一起推入,以便最初填充它。然后,只需在“主”回购库上设置一个后续更新挂钩,以便一旦有提交进入,它就会继续前进,并将它们推送到备份回购站。不需要一个cron作业或rsync,它几乎是一个现场拷贝。
+1用于添加一般性好的解决方案(因此是一个很好的参考),但不回答问题。我们正在问如何拉动NAT,因为我们需要通过NAT – corydoras 2010-05-04 07:46:08
bash脚本想法有什么问题?你可以修改它做一次探测/拉动,然后把它安装成cron作业,不是吗? – Santa 2010-05-03 07:50:50
该脚本将会很好。你知道每个git repo的克隆都是完整的备份吗?所以你很可能已经有很多的回购副本了。 – 2010-05-03 08:23:34
@安德鲁,好点。在我们的情况中,尽管我们有例子,在任何地方都没有克隆,也就是说我们有一些由客户端通过FTP更新的代码。我们使用git来跟踪客户正在做什么,并且没有克隆它的任何地方。 – corydoras 2010-05-04 07:31:40