制作zstd压缩文件’' rsyncable'像gzip一样使用--rsyncable选项

时间:2018-01-03 16:56:15

标签: compression gzip rsync zstandard

是否有办法制作zstd压缩文件’' rsyncable'像gzip与--rsyncable选项一样吗?

我尝试将输入文件拆分为固定长度的块并单独压缩它们,但没有运气。

关于--rsyncable选项:

  

在两台计算机之间同步压缩文件时,此选项允许rsync仅传输在存档中更改的文件而不是整个存档。通常,在对存档中的任何文件进行更改后,压缩算法可以生成与以前版本的存档不匹配的新版本的存档。在这种情况下,rsync将整个新版本的存档传输到远程计算机。使用此选项,rsync只能传输更改的文件以及更新已更改区域中的存档结构所需的少量元数据。

2 个答案:

答案 0 :(得分:4)

在版本1.3.8中,zstd引入了--rsyncable模式。

答案 1 :(得分:1)

  

我尝试将输入文件拆分为固定长度的块并单独压缩它们,但没有运气。

如果您只更改字节而不移动它们,这应该可以工作NP。

也就是说,如果您将"The hog crawled under the high fence"拆分为固定大小的块["The hog ", "crawled ", "under th", "e high f", "ence"]然后独立压缩它们,那么将“hog”更改为“dog”将是rsync友好的,因为压缩版本的其余的块["crawled ", "under th", "e high f", "ence"]仍然是相同的。

另一方面,如果移动字节,就像将“hog”替换为“caterpillar”一样,那么拆分将不再有用,因为块["The cat", "erpillar", " crawled", " under t", "he high ", "fence"]现在不同了,所以与它们的压缩版本不同。

Rsync将帮助前者而不是后者。

如果你想要任意修改,你需要一个智能的块分割算法,它倾向于文件的某些点。例如,如果您将"The hog crawled under the high fence"空格分割为"The ", "hog ", "crawled ", "under ", "the ", "high ", "fence",则将“hog”替换为“caterpillar”只会更改一个压缩块,从而不允许rsync传输剩余的压缩块。