我正在创建一个zip存档,其中包含两个不同路径的相同文件。 zip存档格式是否支持类似于Unix链接的概念?我的意思是只能存储文件一次(节省空间),而是将数据blob索引到zip存档中的两个不同路径。
如果文件格式支持这一点,我怎样才能在Ubuntu中使用免费工具创建这样的存档?
答案 0 :(得分:8)
正如@Greg所说,ZIP不支持硬链接。
但如果我理解正确,你的目的是减少压缩档案的大小。所以让我们想一个替代解决方案。
让我们运行简单的测试来检查不同归档库的压缩率。 我创建了两个相同的二进制文件,并使用ZIP,BZ2,RAR和7z压缩它们。
8641969 test.bin
8641969 test2.bin
第一次只压缩了一个文件。 第二次压缩了两个文件:
<强> ZIP 强>:
$zip -9 test1.zip test.bin
$zip -9 test2.zip test.bin test2.bin
8636837 test1.zip
17273654 test2.zip
<强> BZIP2 强>:
$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才能完成这项工作。 考虑在您的应用程序中使用它。
当然,您需要在您的环境中使用您的文件进行更多测试,以确定它是否真的符合您的需求。此外,您还可以使用选项查看哪种压缩级别可获得最佳压缩比/速度平衡。
答案 1 :(得分:7)
不,Zip file format不支持此功能。这是因为本地文件头包含有关文件的信息,包括其名称,紧接着是文件的压缩数据。两个不同的本地文件头不可能指向相同的压缩数据。
答案 2 :(得分:3)
tar档案支持硬链接