压缩文件格式和压缩算法的那些事

关于压缩文件,经常会遇到,zip,gzip,tar等压缩格式,这些压缩格式有什么区别?还经常遇到deflate,LZMA等压缩算法,这些压缩算和压缩格式有什么区别呢?本文将介绍这方面的内容。

文件格式

首先,被压缩的文件都会存储为特定的文件格式,因此压缩格式也就是对应的文件格式,其中7z软件支持如下图1几种压缩文件格式:
在这里插入图片描述
图1
.7z,.zip,.tar,.wim,gzip,bzip2,xz这几种文件格式可以分成三类,即针对文件的和针对文件夹的压缩。

针单个文件压缩

gzip,bzip2,xz这三种文件格式只支持压缩,不支持打包,因此是只针对单个文件的压缩文件格式,如下图2::
在这里插入图片描述
图2
图2是针对pcapng文件采用gzip压缩,且只支持deflate压缩算法。bzip2,xz两种压缩格式可以自行查看之。

针对文件夹打包

其中.tar,.wim,只支持打包,即将多个文件合成一个文件,不支持压缩,如下图3是针对文件夹的打包,可以看到压缩等级为仅存储,file-folder是文件夹:
在这里插入图片描述

图3
经常遇到的.tar.gz文件,就是先对文件采用tar格式进行打包,在使用gzip文件格式压缩。

针对文件和文件夹打包和压缩

其中.7z,.zip即支持打包,又支持压缩,如下图4是针对文件夹的打包和压缩:
在这里插入图片描述
图4
可以看到zip文件格式既能打包文件夹中的文件,又能够对文件夹中的数据进行压缩,支持deflate等多种压缩算法,7z文件格式可自行查看之。

对于上述的打包和压缩,都会存成对应的文件,即gz,.tar,.xz,.zip,bzip2等后缀格式的文件,这些特定格式的文件都是具备一定的文件格式,也就是具备文件特征的,往往在文件的开头,如下:

  1. 例如gz格式文件的signature 是 1F 8B
  2. 例如tar格式文件的signature 是 75 73 74 61 72
  3. 例如7z格式文件的signature是 37 7A BC AF 27 1C
  4. 例如bzip2格式文件的signature 是 42 5A 68

更多文件格式详见这里

压缩算法

压缩算法就是在对文件或者文件夹压缩时候采用的方法,常见的压缩算法包括deflate,LZMA,LZ4等。每一种文件压缩格式则可能会根据需要采用不同的压缩算法。

7z格式支持的压缩压缩算法为,如下图5:
在这里插入图片描述
图5

zip格式支持的压缩压缩算法为,如下图6:
在这里插入图片描述
图6

gzip格式支持的压缩压缩算法为,如下图7:
在这里插入图片描述
图7
bzip2格式支持的压缩压缩算法为,如下图8:
在这里插入图片描述
图8

xz格式支持的压缩压缩算法为,如下图9:
在这里插入图片描述
图9

混合压缩

严格的来说上述出现的deflate,LZMA ,bzip2算法并不是一种具体的压缩算法,而是一种混合压缩算法或者一种新的而数据结构,deflate结构封装了LZ77算法和哈夫曼算法,详见之前的文章,这里。只是在实际工程应用过程中,已经习惯称defalte为压缩算法了。详见这里,如下图10:
在这里插入图片描述

图10
通过图10可以看到前面的压缩算法大多数都是混合压缩算法,即多种压缩算法的结合。

为什么要区别混合压缩和压缩算法呢,这是因为对于混合压缩,往往会定义数据的结构,即有头有尾,是一种结构化的数据。因此在解析的时候需要按照一定的数据格式进行解析,数据不完整会导致解析解压失败。而对于单纯使用压缩算法压缩的数据,即使缺少一部分尾部数据,由于其没有特定文件结构,逐个字节解析有的时候是能够解析成功。

总结

总的来说文件格式就是一种数据结构,表示该种数据是如何被组织和存储的。数据格式封装了多种压缩算法,会定义新的数据结构。压缩算法则是具体用来介绍文件大小的方法。

有的时候数据会被存储为特定的文件结构,因此需要使用特定的软件解析该文件结构,然后解压缩。有的时候数据直接被特定算法压缩,形成一段文件数据流,这个时候和文件格式无关,只需要用指定的解压缩算法解压即可。

针对特定的文件格式,可以使用7z等解压缩软件,那么针对一段被压缩的数据流,例如HTTP等协议中的压缩数据,如何快速的解压缩呢,将在下一篇文章中《Cyberchef使用功能之-多种压缩操作对比》讲述,详见这里

本文为优快云村中少年原创文章,未经允许不得转载,博主链接这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村中少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值