Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial Hg(汞)备份策略_Mercurial_Backup_Backup Strategies_Rhodecode - Fatal编程技术网

Mercurial Hg(汞)备份策略

Mercurial Hg(汞)备份策略,mercurial,backup,backup-strategies,rhodecode,Mercurial,Backup,Backup Strategies,Rhodecode,我们有500多个Hg存储库,正在寻找快速高效的备份。是否有脚本或工具可用于备份这些存储库。我们尝试了Hg bundle、Hg clone和常规文件系统备份,但都没有帮助 是否有Hg存储库备份策略的标准实践或文档 接下来的一个问题是,当用户正在推动变更集,而我们启动备份时,会发生什么 我们确实使用RhodeCode来发布Hg存储库。 谢谢没有标准。在推送过程中拍摄真正的FS级快照是可以的,但非即时镜像操作(递归复制)可能最终导致repo损坏,尽管它可以修复为推送前状态 过去我做过一些简单的事情,比

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

是否有Hg存储库备份策略的标准实践或文档

接下来的一个问题是,当用户正在推动变更集,而我们启动备份时,会发生什么

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

没有标准。在推送过程中拍摄真正的FS级快照是可以的,但非即时镜像操作(递归复制)可能最终导致repo损坏,尽管它可以修复为推送前状态

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

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

这会以增量方式将所有repo推送到远程ssh服务器,并在推送完整性的同时进行完全更新,必要时创建它们。

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

在主服务器global
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密钥提供密码短语

只有备份钩子才允许推第二台服务器,因此不会出现多个头或所需力的问题


我对这种类型的实时备份感兴趣的是,在主服务器崩溃的情况下,切换到备份服务器应该会快得多。

谢谢Ry4an,我们正在进行文件系统备份。文件系统备份的问题是恢复需要很多时间。是的,你应该使用克隆/推送。我知道你说你过去试过,但这确实是一条路要走。什么不适合您?使用克隆/推送备份500多个存储库需要很多时间。有没有办法,我们可以并行而不是按顺序运行这些存储库的克隆/推送。@RajeevSaraswat有什么问题?只需并行启动“hg push”命令,而不是按顺序启动。Mercurial中没有任何限制阻止您这样做,这只是备份脚本/工具的问题。