← 回總覽

为什么.tar.gz 要两个后缀?用了 20 年才惊觉这个问题……

📅 2026-06-07 08:00 dbaplus社群 软件编程 2 分鐘 1533 字 評分: 85
Unix Linux 开源与工具 工程实践 技术历史
📌 一句话摘要 本文从 .tar.gz 双后缀这一日常细节切入,追溯 tar 与 gzip 的诞生历史,揭示其背后 Unix 哲学中「单一职责、管道协作」的设计思想。 📝 详细摘要 文章以作者在编译 Nginx 时对 .tar.gz 双后缀的偶然疑问为引子,展开了一段关于 Unix 工具设计哲学的深度科普。首先介绍了 tar 命令诞生于 1979 年 Unix V7,其使命是「磁带归档」,只负责将多个文件拼接成字节流,不压缩。接着讲述了 gzip 在 1992 年为绕开 LZW 专利而诞生,只负责压缩单条字节流。两个工具各司其职,通过 Unix 管道 `|` 组合成 `tar cf - m

📌 一句话摘要

本文从 .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 管道协作,双后缀是两道工序的诚实记录。

双后缀背后是 Unix 哲学「单一职责、管道协作」的具象化体现。 Doug McIlroy 提出「让程序只做一件事并做好,让它们互相协作」,而管道 | 正是他本人的发明。.tar.gz 是这一哲学最直白的产物,至今仍是 Linux 内核等核心项目的标准发布格式。
与 Unix 相反,DOS/Windows 世界选择了打包压缩一体的工具哲学。 PKZIP、WinRAR、7-Zip 等工具将打包和压缩合并为一个软件,体现了与 Unix 截然不同的设计思路,反映了两个世界对「工具应该长什么样」的根本分歧。

💬 文章金句

- 人对每天都在用的东西是最没好奇心的。

  • tar 管的事情,就到「拼」为止。那压缩呢?tar 不管。
  • 你看到的那个 .tar.gz,就是这条流水线走完之后自然掉下来的结果。它的后缀之所以是两个,是因为这个文件真的经历了两道工序。
  • 那个 z 不是 tar 在解压。那是 tar 在回头喊一声 gzip,过来搭把手。两个工具,一根管道,四十五年。

📊 文章信息

AI 初评:85

来源:dbaplus社群

作者:dbaplus社群

分类:软件编程

语言:中文

阅读时间:12 分钟

字数:2999

标签: Unix, Linux, 开源与工具, 工程实践, 技术历史

阅读完整文章

查看原文 → 發佈: 2026-06-07 08:00:00 收錄: 2026-06-07 12:00:02

🤖 問 AI

針對這篇文章提問,AI 會根據文章內容回答。按 Ctrl+Enter 送出。