本文从 .tar.gz 双后缀这一日常细节切入,追溯 tar 与 gzip 的诞生历史,揭示其背后 Unix 哲学中「单一职责、管道协作」的设计思想。
📝 详细摘要
文章以作者在编译 Nginx 时对 .tar.gz 双后缀的偶然疑问为引子,展开了一段关于 Unix 工具设计哲学的深度科普。首先介绍了 tar 命令诞生于 1979 年 Unix V7,其使命是「磁带归档」,只负责将多个文件拼接成字节流,不压缩。接着讲述了 gzip 在 1992 年为绕开 LZW 专利而诞生,只负责压缩单条字节流。两个工具各司其职,通过 Unix 管道 | 组合成 tar cf - mydir | gzip > mydir.tar.gz 的流水线,双后缀正是两道工序的诚实记录。文章还对比了 DOS/Windows 世界 PKZIP、WinRAR 等「一把梭」的打包压缩一体工具,并引用 Doug McIlroy 的 Unix 哲学名言,指出 .tar.gz 是这一哲学最直白的产物——小工具、单一职责、管道协作。最后点明,.tar.gz 至今仍是 Linux 内核、nginx 等核心项目的主流发布格式,并非历史惯性,而是其设计哲学在今天依然被认为正确。
💡 主要观点
- .tar.gz 双后缀源于两个独立工具的分工:tar 只打包不压缩,gzip 只压缩不打包。 tar 诞生于 1979 年,为磁带归档设计,将文件拼接成字节流;gzip 诞生于 1992 年,为绕开 LZW 专利,只压缩单条流。两者通过 Unix 管道协作,双后缀是两道工序的诚实记录。
| 正是他本人的发明。.tar.gz 是这一哲学最直白的产物,至今仍是 Linux 内核等核心项目的标准发布格式。
💬 文章金句
- 人对每天都在用的东西是最没好奇心的。
- tar 管的事情,就到「拼」为止。那压缩呢?tar 不管。
- 你看到的那个 .tar.gz,就是这条流水线走完之后自然掉下来的结果。它的后缀之所以是两个,是因为这个文件真的经历了两道工序。
- 那个 z 不是 tar 在解压。那是 tar 在回头喊一声 gzip,过来搭把手。两个工具,一根管道,四十五年。
📊 文章信息
AI 初评:85
来源:dbaplus社群
作者:dbaplus社群
分类:软件编程
语言:中文
阅读时间:12 分钟
字数:2999
标签: Unix, Linux, 开源与工具, 工程实践, 技术历史