备份实时 git 的官方方式

备份实时 git 的官方方式

我找不到有关如何备份“实时” git 存储库的官方指南。

当你在 Google 上搜索类似内容时,第一个结果是:

https://joeyh.name/blog/entry/difficulties_in_backing_up_live_git_repositories/

甚至 KDE 的粉丝们也采用了一种导致灾难的方法:

http://jefferai.org/2013/03/29/distillation/

我可以阅读 stackoverflow、serverfault 和博客的答案……但在我看来,其中有很多混乱之处。而魔鬼就在细节中:我对“KDE 事件”的理解是,他们应该git fsck在之后运行git clone,因为git clone不检查错误(但同样,git 手册中没有关于此的任何内容……)

那么:备份实时 git 存储库的官方方法是什么?手册中是否有关于备份的内容?

答案1

git 捆绑在这里很有用。我已经用这个有一段时间了:

base_dir=/home/git
for gitrepo in `ls -d *.git`
do
 echo '**********[' ${gitrepo} ']***********'
 repo_name=${gitrepo%.git}
 echo cd ${base_dir}/${gitrepo}
 cd ${base_dir}/${gitrepo}
 backup_cmd="git bundle create /opt/git-backups/${repo_name}.bundle master"
 verify_command="git bundle verify /opt/git-backups/${repo_name}.bundle master"
 backup_cmd_all="git bundle create /opt/git-backups/${repo_name}-all.bundle --all"
 verify_command_all="git bundle verify /opt/git-backups/${repo_name}-all.bundle "
 echo -------- master only -------------------
 ${backup_cmd}
 echo -------- all -------------------
 ${backup_cmd_all}
 echo
 echo
done

关键是每隔几周在测试服务器上恢复一次,以测试所有内容。 每次使用时,都要记录一些日志并获取报告,记录生成的文件的校验和、每个文件花费的时间等。 当周围的世界陷入混乱,而您需要恢复时,现在做好准备将为您省去很多心痛。

请记住:在恢复之前,它尚未被备份。

我不确定是否有任何“官方”方法来备份 git repo,有很多方法可以备份 git repo、tar、zip、文件系统转储等,这将在很大程度上取决于备份窗口的大小等因素。

相关内容