【问题标题】:Are hard links possible within a zip archive?zip存档中是否可以使用硬链接?
【发布时间】:2012-02-10 04:34:09
【问题描述】:

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

如果文件格式确实支持这一点,我该如何使用 Ubuntu 中的免费工具创建这样的存档?

【问题讨论】:

    标签: ubuntu compression zip archive hardlink


    【解决方案1】:

    tar 档案支持硬链接

    【讨论】:

    • 这个答案太简洁了。用链接和一些背景信息来支持你的断言。
    【解决方案2】:

    正如@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 
    

    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 能很好地完成这项工作。 考虑在您的应用程序中使用它。

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

    【讨论】:

    • 如何做得更好?数字越大越好吗?
    • @user321627 这个数字是压缩文件的大小,所以归档的大小越小越好
    【解决方案3】:

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

    【讨论】:

    • 谢谢——我也很怀疑,但希望可能有一个我没有想到的技巧。
    • 根据pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT,在UNIX额外字段中,可变长度数据字段可以包含有关“符号或硬链接”的信息。这表明一些实现可以支持这一点。你不觉得吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多