zip存档中是否可以使用硬链接?

Gra*_*los 6 compression ubuntu zip archive hardlink

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

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

Pak*_*ker 9

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

但如果我理解正确,你的目的是减少压缩档案的大小.所以让我们想一个替代解决方案.

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

  8641969  test.bin
  8641969  test2.bin
Run Code Online (Sandbox Code Playgroud)

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

邮编:

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

 8636837  test1.zip
17273654  test2.zip 
Run Code Online (Sandbox Code Playgroud)

BZIP2:

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

 8694997  test1.tbz
17389167  test2.tbz
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

RAR:

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

 8649970  test1.rar
17299916  test2.rar
Run Code Online (Sandbox Code Playgroud)

结论:似乎只有7z才能完成这项工作.考虑在您的应用程序中使用它.

当然,您需要在您的环境中使用您的文件进行更多测试,以确定它是否真正符合您的需求.此外,您还可以使用选项查看您获得最佳压缩比/速度平衡的压缩级别.


Gre*_*ill 8

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

  • 根据https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT,在UNIX额外字段中,可变长度数据字段可以包含有关“符号或硬链接”的信息。这表明一些实现可以支持这一点。你不觉得吗? (4认同)