Linux压缩包我们常见的是.tar.gz,为什么需要这两个后缀?
我们用一个特别容易理解的比喻来说清楚这件事。
想象你要搬很多零碎的东西:
打包(tar做的事):
压缩(gzip做的事):
电脑里的压缩软件(例如gzip)设计得很“笨”:
而 tar 相反:
所以合理的工作流就是:
.tar 箱子。.tar 箱子压扁,变成 .tar.gz。.tar 告诉你:这个文件是一个“大箱子”,里面装了好几个原始文件和文件夹,你可以用 tar 命令打开。.gz 告诉你:这个箱子被 gzip 压缩过,需要先用 gunzip 解压,才能看到里面的 tar 包。加在一起 .tar.gz 就是:
“这是一个经过压缩的打包文件。你要先解压(.gz),再解开打包(.tar),才能得到原始的那些文件。”
有人图省事,将 .tar.gz 改叫 .tgz(缩写),这在 Linux 里能用。
但如果你自作主张叫它 .zip 或者直接叫 .gz,就会产生混乱:
.gz:别人用解压软件打开后,得到的是一个 .tar 文件,还要再处理一次,很麻烦。.zip:别人用 zip 工具打不开,因为内部格式不一样,会报错。两个后缀就像包装上的标签:
“外包装是真空压缩袋(.gz),里面是一个大纸箱(.tar),纸箱里才是你的东西。”
这样任何懂行的人一看就知道该怎么处理它。
.tar.bz2:tar 打包 + bzip2 压缩(另一种压得更紧但慢的方式).tar.xz:tar 打包 + xz 压缩(压得更狠,常用).tar.zst:tar 打包 + zstd 压缩(最新的又快又好)都是两步操作,两个后缀。