使用svnrdump和svnsync进行子版本(SVN)备份有什么区别



我正试图找出如何备份我的远程Subversion(SVN)存储库,我在不同的地方看到了以下两种方法。它们会在生成的转储文件中产生任何显著的差异吗?

1。使用svnsync

svnsync init file:///path/to/local/repo URL_of_remote_repo
svnsync sync file:///path/to/local/repo 
svnadmin dump /path/to/local/repo > repo.dump

2。使用svnrdump

svnrdump dump URL_of_remote_repo > repo.dump

请注意,备选方案1需要一些额外的准备,但这对这里提出的问题并不重要。

转储文件大致相同。如果您使用svnsync,您将在r0上有一些额外的修订属性,svnsync会使用这些属性来跟踪它的源存储库。

除非你有一个小的回购,否则你可能不想每次备份时都对整个回购进行svnrdump。因此,这意味着您必须跟踪备份的修订,并不断生成增量转储。另一方面,svnsync不必跟踪您的修订停止点,它会为您做这件事,每次运行sync时,它只会拉下新的修订。

如果您不使用svnrdump进行完整转储(只转储新修订),则任何修订属性更改都不会反映在转储中(例如,修复svn中的拼写错误:登录修订)。svnsync允许使用copy revprops子命令来完成此操作。

然而,这两种方法都不是完整的备份。锁不会反映在转储输出中(如果不使用锁,则可能无关紧要)。您也不会得到挂钩脚本和存储库配置文件的副本(尽管通常在创建后不会对它们进行太多更改)。

另一种解决方案是svnadmin热复制(它本身也有锁的问题),或者使用svnadmin冻结并使用某种文件系统快照。如果你可以使用原始文件完全访问服务器,我建议你走这条路,因为你会有一个更完整的备份。一旦用其中一种技术复制了repo(或拍摄了快照),就可以使用rsync(或任何其他不能使用的工具)将副本(或快照)复制到远程机器。

最新更新