2

我们在 Solaris 10 上使用 SVN 1.7。最近我们引入了压缩的增量备份。

$ svnadmin dump --quiet --incremental --revision 0:30700 /path/to/repo > /path/to/dump
$ gzip -1 /path/to/dump

最终的 gzip 转储文件 (~850MB) 比原始转储文件 (~500MB) 大。我也尝试过gzip -9,但这仍然会创建比原始文件更大的文件(~650MB)。

4

1 回答 1

1

不幸的是,您没有描述存储库的结构和内容。

可能,您正在存储已使用有效压缩算法(例如 7z / LZMA)压缩的数据。

此数据将出现在svnadmin dump数据流中,无法使用 gzip 进一步压缩,从而导致文件大小增加。

无损数据压缩算法无法进一步显着压缩已压缩或加密的数据。如果您有一个可以保证缩小其输入数据的算法,您可以迭代地应用它来将您的数据缩小到一个字节,这显然是不可能的。

无损压缩算法通过消除输入数据中的冗余来工作,并且在应用该算法之后,这种冗余已经显着减少,因此压缩算法的后续应用将无法改变太多。

事实上,根据所使用的压缩算法及其输出数据格式,最终的数据大小可能会由于算法注入的控制和转义信息而增长。

您可以尝试使用--deltas仅输出每个修订版中不同的数据的选项调用 svnadmin,因此基本上是修订版之间的补丁。没有--deltas它将输出更改文件的完整数据。

但是,如果您正在管理存储库中已经压缩的文件,这不会产生太大(或任何)差异,因为压缩数据也无法正确区分。(存在一些修改过的压缩算法,例如带有--rsyncable参数或 gzip 兼容pigz工具的修补 gzip 版本,它们允许这样做有一定的限制并以压缩效率为代价。)

您可能尝试使用--incremental您提供的标志来执行此操作,但这意味着其他内容。仅当您转储修订范围时才有意义,并且仅控制第一个修订是否包含此修订的完整转储或仅包含此修订中更改的文件。因此,如果您从修订版 0 转储,它不会有任何影响。

于 2017-04-17T11:00:47.653 回答