9

我正在创建一个包含两个不同路径的相同文件的 zip 存档。zip 存档格式是否支持类似于 Unix 硬链接概念的东西?我的意思是能够只存储一次文件(节省空间),但可以将该数据块索引到 zip 存档中的两个不同路径。

如果文件格式确实支持这一点,我怎么能在 Ubuntu 中使用免费工具创建这样的档案?

4

3 回答 3

11

正如@Greg 所说,ZIP 不支持硬链接。

但是,如果我理解正确,您的目的是减小压缩存档的大小。因此,让我们考虑一个替代解决方案。

让我们运行简单的测试来检查不同存档库的压缩率。我创建了两个相同的二进制文件并使用 ZIP、BZ2、RAR 和 7z 压缩它们。

  8641969  test.bin
  8641969  test2.bin

第一次只压缩一个文件。第二次压缩两个文件:

邮编

$zip -9 test1.zip test.bin
$zip -9 test2.zip test.bin test2.bin

 8636837  test1.zip
17273654  test2.zip 

压缩包2

$export BZIP=--fast
$tar cjf test1.tbz test.bin 
$tar cjf test2.tbz test.bin test2.bin 

 8694997  test1.tbz
17389167  test2.tbz

7z

$7z a -mx=9 test1.7z test.bin 
$7z a -mx=9 test2.7z test.bin test2.bin 

 8705285  test1.7z
 8707054  test2.7z

RAR

$rar a -m5 test1.rar test.bin
$rar a -m5 test2.rar test.bin test2.bin 

 8649970  test1.rar
17299916  test2.rar

结论:似乎只有 7z 做得好。考虑在您的应用程序中使用它。

当然,您需要在您的环境中对您的文件进行更多测试,看看它是否真的是您需要的。您还可以使用选项来查看在哪个压缩级别上获得最佳压缩比/速度平衡。

于 2012-01-14T03:06:01.647 回答
9

不,Zip 文件格式不支持此功能。这是因为本地文件头包含有关文件的信息,包括其名称,紧随其后的是文件的压缩数据。两个不同的本地文件头不可能指向相同的压缩数据。

于 2012-01-14T02:16:16.770 回答
4

tar 档案支持硬链接

于 2012-07-29T19:37:04.743 回答