ZIP、GZIP、TAR、7z 和 RAR 详解
每种压缩包格式能做什么,哪里不装额外软件就能打开,以及不同任务该用哪一种。
压缩包格式其实做的是两件很容易混淆的事:把多个文件打包成一个,以及把数据压缩得更小。有的格式两件事都做,有的只做其中一件,弄清楚谁做什么,就能解开关于 .zip、.gz、.tar.gz、.7z 和 .rar 的大部分困惑。
打包与压缩
打包文件是一个单独的文件,里面装着其他文件,以及它们的文件名和文件夹结构。Tar 只做这一件事:.tar 文件完全没有压缩。压缩器接收一条数据流并把它变小。Gzip 只做这一件事:一个 .gz 里只有一个压缩过的文件。ZIP、7z 和 RAR 则同时做两件事,压缩每个文件,再把它们打包在一起。
这就是 Unix 世界里有 .tar.gz 的原因:先用 tar 打包,再用 gzip 压缩。这也解释了为什么从服务器下载的 .gz 文件解压后只有一个文件。
各种格式
| 格式 | 打包? | 压缩? | 无需额外软件即可打开的系统 | 典型用途 |
|---|---|---|---|---|
| ZIP | 是 | 是(DEFLATE) | Windows、macOS、iOS、Android、Linux | 发送和分享文件;通用首选 |
| GZIP (.gz) | 否 | 是(DEFLATE) | macOS、Linux;Windows 不行 | 网页资源、日志、数据库导出、单个大文件 |
| TAR | 是 | 否 | macOS、Linux;Windows 不行 | 保留 Unix 权限和目录结构 |
| TAR.GZ / .tgz | 是 | 是 | macOS、Linux;Windows 不行 | 软件源码、服务器备份、Linux 软件包 |
| 7z | 是 | 是(LZMA) | 系统都不原生支持;需要 7-Zip 或类似软件 | 大型压缩包追求最高压缩率 |
| RAR | 是 | 是(专有算法) | 系统都不原生支持;需要 WinRAR 或解压软件 | 老旧下载文件、分卷压缩包 |
文件实际能变小多少
这些格式的原理都是寻找重复内容。文本、电子表格、代码、日志,以及未压缩的图片和音频,都充满重复内容,压缩后会大幅变小。而本身已经压缩过的文件,包括 JPG、PNG、MP3、MP4、PDF 以及新版 Office 文档(它们内部其实就是 ZIP 文件),重复内容早已被去掉,几乎压不动。
| 内容 | ZIP / GZIP | 7z(LZMA) |
|---|---|---|
| 纯文本、CSV、日志 | 缩小 75% 到 90% | 缩小 80% 到 93% |
| 源代码 | 70% 到 85% | 78% 到 90% |
| WAV 音频、BMP 图片 | 30% 到 60% | 35% 到 65% |
| Office 文档 | 5% 到 15% | 10% 到 20% |
| JPG、MP4、MP3、PDF | 0% 到 3% | 0% 到 5% |
实际启示:把一个照片文件夹打成 ZIP,得到的是一个方便发送的文件,但不会更小。要减小一组照片的体积,先用图片压缩工具压缩图片本身,再打包成 ZIP 发送。
该用哪一种
- 发文件给任何人:ZIP。所有人在所有设备上都能打开,不用装任何软件。用 ZIP 工具就能生成。
- 给服务器、处理流程或数据导入用的单个大文件:GZIP。服务器和各类工具默认期待的就是它。参见 GZIP 工具。
- 备份 Linux 或 macOS 文件夹并完整保留权限:TAR.GZ。
- 归档超大文件、每 MB 都要省、接收方懂技术:7z。
- 打开旧的下载文件:RAR 需要 7-Zip 之类的解压软件;如今已没有理由再新建 RAR 文件。
加密压缩包
ZIP 最初的密码保护很弱,很快就能被破解;而采用 AES 加密的 ZIP(7-Zip 和 WinZip 都提供)以及 7z 内置的 AES 加密都很可靠。如果你需要保护文件,而不只是打包,就用 AES,并通过与压缩包不同的渠道发送密码。浏览器端工具(包括本站的工具)无法打开加密压缩包,因为没有密钥就读不了里面的内容。
不装软件也能打开压缩包
Windows 原生能打开 ZIP,但打不开 .gz、.tar 或 .7z。macOS 能打开 ZIP、.gz 和 .tar.gz,但打不开 .7z 或 .rar。对于 ZIP 和 .gz,无论在什么设备上,本站的 ZIP 解压和 gunzip 工具都能直接在浏览器里打开,让你下载里面的内容,全程不上传任何东西。