Hg(Mercurial)备份策略

时间:2015-02-19 19:36:41

标签: mercurial backup backup-strategies rhodecode

我们有500多个Hg存储库,我正在寻找快速有效的备份需求。是否有可用于备份这些存储库的脚本或工具。我们尝试了Hg bundle,hg clone和常规文件系统备份,但他们没有帮助。

是否有标准做法或Hg存储库备份策略的一些文档?

后续问题,当用户正在推动变更集并开始备份时会发生什么?

我们确实使用RhodeCode来发布Hg存储库。 感谢

2 个答案:

答案 0 :(得分:2)

没有标准。在推送过程中拍摄的真正的FS级快照会很好,但是非瞬时镜像操作(递归复制)可能会以损坏的回购结束,尽管它可以修复到推送前状态。

在过去,我做过一些简单的事情:

for repo in $(find /srv/repos -type d -name .hg | sed 's/\.hg$//') ; do
    hg --cwd $repo --repository $repo push ssh://backupserver/$(basename $repo)
done

将所有存储库推送到远程ssh服务器,逐步推送,完全更新同时推送完整性,并在必要时创建它们。

答案 1 :(得分:0)

我有一个类似的克隆/拉取来自备份服务器的解决方案,但我在hg钩子上触发备份。

在主服务器全局hgrc中,我有:

changegroup.backup = .../backup.sh

backup.sh之类的内容:

REPO=`hg root`
ts sshpass -p '...' ssh hg@backupserver "~/bin/pull.exp $REPO" 2>> $LOG

Ts(任务假脱机程序)允许操作异步发生。 expect脚本正在处理存储库可能是新的(因此执行hg clone --noupdate)或已经存在(从而执行hg pull)这一事实,并且还可以在请求时为ssh密钥提供密码。

只允许第二台服务器上的备份挂钩,因此不会出现多个头或需要用力的问题。

在这种类型的实时备份中我感兴趣的是,如果主服务器崩溃,切换到备份服务器应该快得多。