2014-08-31 207 views
1

我们有多个.NET Web应用程序,它们共享相当多的通用库。他们都不在GAC中。对具有多个相同文件的文件系统目录树进行高效压缩

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

此目录结构是从一个zip归档文件中提取的。

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

这是一个巨大的冗余,我希望在zip压缩文件中消除冗余,如果在磁盘上创建冗余文件,我不在乎。我看到优化zip的两种方法:

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

方法1

我用拉链和7Z测试压缩目录结构。我使用路口和文件符号链接作为减少磁盘空间的手段。

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

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

方法2

我想刚好被http://sourceforge.net/p/sevenzip/feature-requests/794/描述。但是,它仅仅是一个功能请求。

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

任何帮助,欢迎。

回答

0

mark,你是怎么试试lrzip的? 它无法检测压缩存档内的重复项(默认zip);它应该与一些非压缩档案一起使用(在Unix世界中 - 带有tar)或者是在没有压缩的情况下创建的zipfile(你将得到大小几乎等于输入大小总和的档案)。

你也可以尝试任何多文件压缩器,能够使用solid mode(rar,7z),但是如果你的压缩文件很大并且重复文件之间有很大的距离,这可能不起作用。 lrzip支持更大的距离。

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

+0

我没有在一天结束的时候尝试lrzip。 – mark 2015-03-14 18:04:51

相关问题