需要实现Git备份机制吗?

时间:2015-11-09 22:14:32

标签: git shell gitolite bitbucket-server

我有独特的情况。我在一台git服务器上有大约30个存储库,每天都在进行开发。为了更好地进行灾难管理,我希望每天备份30个存储库,并考虑将每天的更改推送到新服务器(在我的网络/远程位置之外)。

有没有自动化的方法呢?

谢谢,

2 个答案:

答案 0 :(得分:2)

标准方法是将repos克隆到异地,并使用cron使其保持最新(在每个上运行'git fetch --all'或'git remote update')。这是递增的,可以经常运行(每小时,每天等)。

这并不能保护您免受人为错误的影响,例如一个糟糕的'git push -force',它可以从源代码库中修改。对于这种情况,您可能需要定期静态更新 - 在更新克隆的仓库后,使用以下命令将其保存到捆绑包中:

git bundle create <filename> --all

如果你想要唯一的文件名,那么这可以工作:(当然,把你的路径和回购名称放在这里)

reponame=myrepo
filename=/opt/backups/git-${reponame}-$(date +%Y-%m-%d:%H:%M:%S).bundle
git bundle create "$filename" --all

然后将捆绑包保存在机器的本地磁盘上或上传到其他地方,例如S3。

答案 1 :(得分:0)

您可以在远程位置创建新的仓库并镜像它们。 然后将其添加到您的钩子中,或者制作一个可以推入镜子的脚本。

我实际上是在github和gitlab之间做的。

In this answer you can get a better idea of what i'm saying.