2009-01-14 323 views
10

我们当前的备份过程每晚都会执行一次SVN HOTCOPY备份到另一台计算机上的备份位置。 我能以某种方式从备份中恢复并保留所有修订历史记录吗? 或者我需要使用svn dump/load?如何从svn hotcopy备份中恢复

感谢, Chandrajeet

回答

24

“热拷贝的svnadmin” 实际上将整个仓库到另一个位置。该副本与原始存储库无法区分,实际上可以用作存储库本身。因此,您应该能够将svnadmin hotcopy的结果复制回您的存储库位置,并拥有完全有效的已恢复存储库。

hotcopy对普通文件系统副本的优点是它尊重Subversion的锁定机制。

+0

感谢您的回复。如果损坏的存储库通过备份位置的干净存储库进行备份,我担心这种情况。尽管我从周一到周五采取循环备份,但我担心上述情况。什么是svnadmin恢复?由于我的存储库位于一个fsfs系统上,我想“svnadmin recover”是没有用的。问候, – chandrajeet 2009-01-14 21:50:11

+0

svnadmin恢复将从Subversion 1.5的fsfs中的一些错误中恢复。不过,我仍然建议在更永久的备份媒体上保留定期快照。 – MattK 2009-01-14 21:55:53

7

作为日常备份的一部分,您可能需要运行svnadmin verify <REPOSITORY>

您既可以验证原始或hotcopied。

绝对是在从备份恢复之前执行此操作。

1

我会做得更多,然后只需每晚运行一次hotcopy。我会使用“svnadmin dump”来创建修改历史记录到转储文件中,该文件可以恢复到正在运行的存储库中。

您应该将这些dumpfiles备份到磁带或非现场磁盘,就像标准备份过程一样。如果一个腐败的存储库在被捕获前几天仍然存在(例如周末或假日),则可以返回到最后一个好文件。

1

可能是你想看看我的回答类似的问题: "Restore SVN backups from multiple files"

你也应该考虑为恢复SVN-workingcopies策略: 如果你只是恢复了hotcopied(或倾倒)回购所有正在进行更高版本修改的workscopys将是无效的,开发人员必须再次退房。通常这需要更多的时间才能重新回到单纯回收回购的轨道上。

转储问题是:它们非常耗时创建和回放。

此外,如果您使用钩子脚本,它们将包含在您的hotcopy中,但它们不会在您的转储中。

那就是说我会推荐hotcopy和per-commit dump的组合