我在我工作的企业中有一个大型存储库到SVN服务器中。我需要每天验证这个存储库的完整性,以检查SGBD是否不稳定或破裂。
我使用提示命令行"svnadmin path_to_my_repository"来验证我的存储库的完整性。
问题是:我的存储库是如此之大(大约23GB, 28.029个版本),这个操作需要很多时间才能完成。
问题是:如何优化这个操作,使其花费的时间少于实际花费的时间?或者有其他方法可以用更少的时间来验证存储库的完整性?
一些额外信息:
- SVN存储库所在的操作系统:Windows Server 2008
- 我用来存储存储库的SVN服务器是:VisualSVN Server Manager 2.5.7
- 命令"svnadmin path_to_my_repository"实际上需要18~24小时。
"svnadmin verify"命令有几个不同的参数。其中之一是"——修订"。因此,你应该为你拥有的每个存储库做的是,找出一种方法来获得最近N天(如果每天运行,可能是最近7天)修改的修订列表,并且只验证这些。
自某个日期以来使用SVN更改的文件列表
你仍然应该定期对整个存储库做一次完整的"svnadmin验证"(每周?月吗?)完整检查的频率应该是这样的:如果遇到问题,您可以将损坏的版本从备份集中拉出来。
或者,如果你使用"svnadmin hotcopy"并将该热拷贝推送到第二组主轴(或第二台服务器),你可以让热拷贝被验证。
作为最快的解决方案,我发现是代码的脚本并行调用svn命令(svnadmin path_to_my_repository)。然后,对于每个线程,我在SVNServer中调用命令"verify",以获取不同的存储库。这不是解决方案,我正在寻找,但我达到了一些增益的性能与此。如果有人知道只用svnadmin命令优化这个任务的解决方案,请告诉我们。谢谢。