【问题标题】:Efficient compression of a file system directory tree with many identical files高效压缩具有许多相同文件的文件系统目录树
【发布时间】:2014-10-25 00:30:06
【问题描述】:

我们有多个 .NET Web 应用程序,它们都共享相当多的公共库。他们都不在 GAC 中。

部署约束是所有这些 Web 应用程序都有专用目录。这会导致整个目录结构中出现大量重复的 dll。

此目录结构是从单个 zip 存档中提取的。

因此,zip 存档在不同目录中有许多相同的文件。

这是一个巨大的冗余,我想在 zip 存档中消除它,我不太关心是否在磁盘上创建了冗余文件。我看到了两种优化 zip 的方法:

  1. 使用 Windows 符号链接和连接来减少物理相同文件的数量。
  2. 使用不会将相同文件数据压缩两次的智能压缩。

方法一

我使用 zip 和 7z 来测试压缩目录结构。我使用联结和文件符号链接作为减少磁盘空间的方法。

不幸的是,zip 和 7z 都压缩连接,就好像它们是完整的目录一样。一个符号链接被 7z 压缩为一个零长度的文件,它作为符号链接的性质在解压缩时会丢失。 zip 会遍历符号链接并压缩目标数据,这会导致存档中的文件内容重复。

简而言之,我没有使用第一种方法消除重复的文件数据。

方法二

http://sourceforge.net/p/sevenzip/feature-requests/794/ 准确描述了我想要的。然而,它只不过是一个功能请求。

对功能请求的评论提到lrzip 是一种高效的大文件压缩器。我必须检查它,但它似乎并没有像我希望的那样消除重复的文件数据。

欢迎任何帮助。

【问题讨论】:

    标签: windows zip


    【解决方案1】:

    mark,你是如何尝试 lrzip 的? 它无法检测压缩存档中的重复项(默认 zip);它应该与一些非压缩存档(在 Unix 世界中 - 使用 tar)或未经压缩创建的 zipfile 一起使用(您将获得大小几乎等于输入大小总和的存档)。

    您也可以尝试任何多文件压缩器,支持solid mode (rar, 7z),但如果您的存档很大并且副本之间的距离很大,这可能不起作用。 lrzip 支持更大的距离。

    Unix 上的 Tar(和 PAX)支持硬链接和软链接:http://www.gnu.org/software/tar/manual/html_section/tar_71.html#SEC140

    【讨论】:

    • 我最终没有尝试 lrzip。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 2013-04-04
    • 2015-11-28
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多