为什么gzip比Windows 2012中的压缩文件更好

时间:2015-09-29 13:37:12

标签: windows gzip

我有一个4.7 Gb文件,我想存储和移动。它位于Windows 2012服务器上。

当我使用高级文件选项“压缩以节省磁盘空间”时,操作系统能够将其减少到3.013 GB,或原始大小的64%。当它坐在服务器上时这很好。

我不得不移动它,所以我使用了我最喜欢的(90年代)压缩工具gzip,它减少到2.294 Gb,或原始尺寸的48.7%。

问题
为什么90年代的“gzip”能够制作文件,其占用空间是Windows 2012压缩的75%?这是关于“开放时间”吗?这是一个开源具有封闭源中不存在的性能的地方吗?是什么给了什么?

2 个答案:

答案 0 :(得分:1)

他们正在做不同的事情。

NTFS压缩必须支持随机访问,包括将数据读取到压缩文件的中间或开头,

a)可能不像之前的数据那样可压缩(因此所有后来的数据都必须移动)

b)将使用于压缩文件其余部分的字典无效(因此需要重写所有字典)

使用GZIP也意味着如果您希望读取文件的最后十个字节,则必须首先解压缩整个文件,以使压缩字典处于正确的状态。

因此,NTFS以较小的块压缩文件,并且不会利用文件中广泛分离的部分之间的相似性来增加压缩。

答案 1 :(得分:0)

我不知道内幕,但我愿意打赌Windows和GZip都使用相同的Deflate压缩算法。 https://en.wikipedia.org/wiki/DEFLATE

以下是我想象中的差异:

  1. Deflate的压缩设置为0-9,其中0表示无压缩,9表示最佳压缩。中间的所有值都具有速度与压缩的折衷。当Windows正在压缩您的驱动器时,它可能正在使用他们确定的设置,当您需要打开文件时,它在速度方面是一个很好的折衷。

  2. 我知道你说你在单个文件上运行,但是当人们提出这个问题时,通常是因为GZip在一个文件上运行。这就是它通常与Tar结合使用的原因。压缩单个文件总是比单独压缩多个文件更有优势(如.zip)。