我们当前的备份过程是每晚执行一次 SVN HOTCOPY,到另一台机器上的备份位置。我可以以某种方式从该备份中恢复并保留所有修订历史记录吗?还是我需要使用 svn dump/load?
谢谢,钱德拉吉
“svnadmin hotcopy”实际上将整个存储库复制到另一个位置。该副本与原始存储库没有区别,实际上可以用作存储库本身。因此,您应该能够将 svnadmin hotcopy 的结果复制回您的存储库位置,并拥有一个完全有效的恢复存储库。
与常规文件系统副本相比,热复制的优势在于它尊重 Subversion 的锁定机制。
作为日常备份的一部分,您可能希望运行svnadmin verify <REPOSITORY>
您可以验证原件或热拷贝。
在从备份恢复之前一定要这样做。
我会做更多的事情,然后每天晚上简单地运行一个 hotcopy。我会使用“svnadmin dump”来创建转储文件的修订历史,可以将其恢复到工作存储库。
您应该按照标准备份过程将这些转储文件备份到磁带或异地磁盘。如果损坏的存储库在被捕获之前持续存在数天(例如在周末或假期),您可以返回到最后一个好的文件。
可能你想看看我对类似问题的回答: “从多个文件中恢复 SVN 备份”
您还应该考虑恢复您的 SVN 工作副本的策略:如果您只是恢复一个热复制(或转储)的 repo,所有更高版本的工作副本都将无效,开发人员必须再次检查。通常,与单独恢复回购相比,这需要更多的时间才能重新走上正轨。
转储的问题是:它们的创建和回放非常耗时。
此外,如果您使用钩子脚本,它们将包含在您的热拷贝中,但它们不会在您的转储中。
那就是说我会推荐 hotcopy 和 per-commit 转储的组合