压缩格式与算法速查

5 个速查板块 · 关联 4 款站内工具 · 数据最后核对 2026-10-05

有损与无损怎么分、打包和压缩是两件事、zip 和 tar.gz 差在哪、为什么图片视频再压也小不了多少。

压缩分两大类:无损压缩能完整还原原始数据,有损压缩会丢弃一部分信息换取更小的体积。选哪一种取决于这份数据「丢掉一点还能不能用」——文档和代码必须无损,照片和视频则可以在可接受范围内有损。

另一件常被混淆的事是「打包」与「压缩」:打包是把多个文件合成一个文件,压缩是让体积变小。这是两个独立步骤,tar.gz 这类扩展名正是两步叠加的结果。

1有损与无损压缩

判断标准是「压缩后再解压,内容是否与原始数据完全一致」。这是选择压缩方式前必须先确定的一件事。

类型特点压缩率典型格式
无损压缩可完整还原,一个字节都不差通常几十个百分点zip、gz、7z、xz、png、flac
有损压缩丢弃部分信息,不可完全还原通常能达到数倍甚至十倍以上jpg、mp3、mp4、webp(有损模式)
文本与代码必须无损有损会直接破坏内容用 zip / tar.gz / 7z
照片通常有损可接受质量参数可调,收益最大用 jpg / webp / avif
音频按用途选择留存归档用无损,日常收听可有损flac 无损、mp3 / aac 有损
视频几乎都是有损无损视频体积巨大,仅专业后期用mp4 / mkv 为有损容器,含无损编码选项
已经压缩过的文件再次压缩收益极小不要重复压缩如对 jpg / mp4 再打包压缩

「已经被压缩过的文件再压一次」是最常见的无效操作:对一批 JPG 图片打包成 ZIP,体积几乎不会变小,因为 JPEG 内部已经把可压缩的冗余去掉了。压缩只对存在冗余的数据(文本、日志、未压缩的图像/音频)有明显效果。

2打包与压缩是两件事

这是 Unix 系工具链的核心设计:一个工具负责打包,另一个负责压缩,可以自由组合。

步骤工具示例产物说明
仅打包tar.tar把多个文件合成一个,体积不减小
仅压缩gzip.gz压缩单个文件,不负责把多个文件合成一个
先打包再压缩tar + gzip.tar.gz / .tgz最经典的组合,Linux 下极为常见
打包加新算法tar + xz.tar.xz压缩率更高,代价是更慢
打包压缩一体zip.zip支持多文件,且跨平台兼容性最好
先进容器格式7z / rar.7z / .rar自带打包能力,压缩率与功能各有侧重

`gzip` 的设计是「只对单个文件流压缩」,所以它本身无法把一堆文件合成一个包。这也是为什么 Linux 上常见 `tar.gz`——先用 `tar` 打包,再用 `gzip` 压缩。理解这点,就不会奇怪为什么「`.gz` 里只有一份内容」。

3常见格式对照

不同格式的差别主要在压缩率、速度与兼容性三者的权衡上。

格式类型压缩率兼容性适用场景
zip打包 + 压缩一体中等最好,各系统原生支持跨平台分享,通用性优先
tar.gz / tgz打包 + 压缩中等Linux / macOS 常见源码包、服务器备份
tar.bz2打包 + 压缩较高,速度较慢需 bzip2 支持对体积敏感且不急于解压
tar.xz打包 + 压缩高,速度最慢较新系统支持分发时追求最小体积
7z打包 + 压缩一体很高(用 LZMA)需专用工具归档与备份,追求压缩率
rar打包 + 压缩一体高需专用工具(专有格式)历史上常见,现逐步被替代
zst / zstd压缩较高,速度很快较新,普及中现代场景兼顾速度与压缩率
br / Brotli压缩高(文本类突出)浏览器广泛支持HTTP 内容压缩

选择顺序可以简化为:需要发给别人就用 `zip`;只在 Linux 内部流转用 `tar.gz`;追求最小体积且能等就用 `7z` 或 `tar.xz`;现代服务端与网页传输考虑 `zstd` 与 Brotli。

4压缩算法与级别

算法决定「怎么找冗余」,级别决定「花多少时间去找」。级别越高通常越小,但收益递减且耗时增加。

算法特点常见载体
DEFLATE经典通用算法,速度与压缩率平衡zip、gzip、PNG 内部
LZMA / LZMA2压缩率高,占用内存与时间较多7z、xz
Brotli对文本压缩效果好,浏览器原生支持HTTP 内容编码、部分字体格式
Zstandard压缩率与速度都可调,现代场景常用数据库、打包分发、日志压缩
Bzip2压缩率优于 gzip,但速度较慢.bz2 格式
压缩级别一般 1 到 9,级别越高越慢越小gzip -6 常被认为是较好折中
收益递减从 6 提到 9 的增益通常不大,耗时却明显增加不必盲目追求最高级别

压缩级别的收益递减很明显:很多场景下从默认级别提到最高级别,体积只多降几个百分点,时间却成倍增加。除非是分发一次、下载多次的场景(此时小一点更有价值),否则默认级别通常够用。

5压缩收益的判断

在动手压缩之前,先判断「这份数据还有多少可压缩空间」,可以避免做无用功。

文本类收益最高
日志、源代码、JSON、CSV 这类重复模式多的文本,压缩率常能达到六七成以上
位图图像中等
未压缩的位图(BMP)压缩空间很大,但 PNG 与 JPEG 已做过压缩,再包一层几乎没有收益
已压缩媒体几乎无收益
MP4、MP3、JPG 内部已是压缩数据,再套 ZIP 体积基本不变
数据库导出文件高收益
SQL 备份、数据快照这类文本化数据压缩效果明显
压缩与加密的顺序
一般先压缩再加密。加密后的数据接近随机,几乎无法压缩
传输时用内容编码
网页资源交给服务器做 gzip 或 Brotli 压缩,比预先压缩好文件更灵活

关于「压缩格式与算法速查」的常见问题

zip 和 tar.gz 有什么区别?

核心区别在于职责划分。zip 是「打包 + 压缩」一体化的格式,它能直接把多个文件装进一个压缩包,兼容性最好,Windows、macOS、Linux 都能原生打开。tar.gz 则是两步叠加的结果:先用 tar 把多个文件打包成一个 tar 文件,再用 gzip 压缩它,得到 .tar.gz。这样做的好处是职责清晰、工具可以自由组合(同样的 tar 可以配 gzip、bzip2 或 xz),并且能更好地保留 Unix 的文件权限、符号链接等元数据,所以源码包与服务器备份常用它。选择上,跨平台分享用 zip 更省事,Linux 内部流转用 tar.gz 更常见。

有损压缩和无损压缩该怎么选?

判断依据是「丢掉一点数据你能不能接受」。文档、代码、程序、数据库备份这类内容必须无损,因为任何一个字节的改变都可能导致文件损坏或程序出错,所以要用 zip、gzip、7z 这类无损格式。照片、音频、视频则通常可以在可接受的范围内有损压缩,换取大幅减小的体积,这就是 JPEG、MP3、MP4 存在的原因。实际操作中还要注意:已经用有损方式压缩过的文件(如 JPG)再套一层无损压缩几乎没有收益,因为冗余已经被去掉了;而有损转换会叠加画质损失,反复转码会让质量持续下降。

为什么我把图片打包成 ZIP,体积几乎没有变化?

因为 JPEG、PNG、MP4 这类文件内部已经做过压缩,冗余信息基本被去掉了,再套一层通用压缩算法自然找不到多少可压缩的内容。压缩算法的工作原理是发现并消除重复模式,而这种模式在已经压缩过的数据里已经很少了。所以对这类文件,正确做法是重新做一次针对性压缩——图片用合适的质量参数重新导出,视频调整码率或分辨率,而不是在外面再包一层压缩包。真正压缩收益明显的对象是文本类数据,比如日志、源代码、CSV、SQL 备份,它们的重复模式多,压缩后往往能减小一大半。

网页资源该用哪种压缩?

服务端内容编码当前推荐 Brotli 与 gzip 组合。Brotli 对文本类内容(HTML、CSS、JavaScript)的压缩率通常优于 gzip,主流浏览器都已支持,缺点是对动态内容的压缩耗时略高。实践中的做法是:对静态资源预先压缩成 Brotli 与 gzip 两份,由服务器根据浏览器声明支持的编码返回对应版本,并对静态资源设置较长的缓存时间。要注意不要对已经压缩过的资源(JPEG、PNG、MP4)再启用内容编码,那只是白白消耗 CPU。另外 gzip 的压缩级别不必调到最高,默认或中等级别在体积与速度之间通常更划算。

内容标识:本页内容由人工智能辅助生成,并经人工核对与编辑。详见 人工智能生成内容标识说明。
内容说明:本页速查数据由本站自行整理,事实性内容以对应官方规范与文档为准,未复制第三方速查表或百科的表述。数据最后核对日期:2026-10-05。若发现错误或已更新的标准,欢迎通过页脚反馈入口告知。