情况
我有一个非常大的Subversion存储库,我试图有效地备份。存储库大小约为6 GB且不断增长。一些大型提交的大小约为500到1GB。
我正在尝试通过互联网上传链接将此存储库备份到场外位置。
解释它的庞大规模
对于任何想知道的人,我们会在这个存储库中保留各种站点(配置文件,EXE,数据文件)的整个生产环境,以便我们可以回滚到现有的工作版本并跟踪对生产设置的更改。代码保存在不同的存储库中。
如何
以下是我实际做的事情:
问题
首先,我必须说它有效,但它仍有潜在的问题。
问题在于我期望每次进程运行时,只会复制新修订文件/数据([repos] / db / revs / 0 /。因此,当进行大量提交时,仅需要带宽和时间。但是,相反:
就像每次进行热门复印时,[repos] / db / revs / 0 / ...中的文件都在变化。
问题
这是“svnadmin hotcopy”的预期行为,[repos] / db / revs / 0 / ...是否正在从一个hotcopy变为另一个?
我可以使用任何建议或选项使此热门作品 rsync友好或说 rsyncable ?
我不太确定在整个存储库中使用'svnadmin dump'会产生“rsyncable”文件。
答案 0 :(得分:2)
我不知道Subversion如何存储其备份文件的细节,所以我不知道r5678的hotcopy是否应该与r6789的hotcopy相同(这是rsync需要做的事情)一个有效的副本)。我们在备份开发存储库时所做的是每周进行一次完整备份(hotcopy然后备份整个gig),并使用以下命令每天进行增量备份:
svnadmin dump /path/to/repos -r latest-backed-up-rev:latest-repos-rev --incremental --deltas
--incremental选项意味着“这必须应用于版本latest-backed-up-rev的存储库”,而--deltas选项使用的二进制格式并不比存储库中的实际更改大得多大小本身。如果将步骤1替换为仅添加一个小文件的转储,那么您的rsync将表现得很好。
我有一个shell脚本,可以自动查找备份和最新版本,并根据需要创建正确的文件。