带Rsyncrypto的Subversion版本库的RSync备份

这是从stackoverflow crosspost,因为我发现我可能会在这里得到一个合格的观众

情况

我有一个非常大的Subversion版本库,我试图有效地备份。 版本库大小约为6 GB,并在不断增长。 一些大的承诺大小在500到1GB左右。

我正尝试通过Internet上行链路将此存储库备份到非现场位置。

解释它的庞大规模

任何人想知道,各个站点(configuration文件,EXE,数据文件)的整个生产环境都保存在这个存储库中,这样我们可以回滚到现有的工作版本,并跟踪生产设置的变化。 代码保存在不同的存储库中。

如何

这是我实际上在做什么:

  1. 使用svnadmin hotcopy SRCDIR TGTDIR”将存储库备份到服务器上的工作文件夹
  2. 使用rsyncrypto -r SRCPATH DSTPATH KEYSPATH CERTIFICATE”encryption和压缩该存储库
  3. 使用“rsync -Crtv” (实际上是cwRsync,因为我在Windows上运行)将encryption版本备份到异地位置

问题

首先,我必须说它是有效的,但它仍然有一个潜在的问题。

问题在于,我期待每次进程运行时,只有新的修订文件/数据将被复制([repos] / db / revs / 0 / …),因此只需要带宽和时间做了一个大的承诺。 但是,相反:

  • 如果我多次运行第3步,rsync的行为应该如此,没有任何东西被复制,因为没有任何改变。
  • 如果我只运行多个步骤#2和#3,rsync也performance良好。 envrypted版本每次都是一样的,rsync不必传输任何东西。
  • 但是,似乎每次运行全部三个步骤 (对存储库进行了新的提交),整个存储库都将被重新上传 。 因此,摆在首位使用rsync的全部目的。

就好像[repos] / db / revs / 0 / …中的文件每次做一个hotcopy都在改变。

问题

这是从“svnadmin hotcopy”预期的行为,[repos] / db / revs / 0 / …从一个hotcopy改变到另一个?

任何build议或选项,我可以用这个hotcopy rsync友好或说rsyncable

我不太确定在整个存储库上使用“svnadmin dump”会产生一个“rsyncable”文件

encryption/压缩存储库时,对基础数据(存储库)的任何小改动都会传播到encryption/压缩文件中。 所以,一个字节的变化可以在整个encryption/压缩数据集上传播。 所以,从rsync的angular度来看,所有的DID都会改变。

db/revs/中的文件没有改变,但是它们的时间戳。 --size-only是答案。