所有不同类型的 .tar 档案有什么区别?

Tre*_*oss 18 filemanager tar

谁能告诉我这么多档案是怎么回事,它们有什么不同?

有至少五个,我能想到的是,.tar.tz.tar.gz.tar.bz2.tar.lz.tar.z

哪个最适合什么应用程序?对同一个文件进行如此多的变体似乎很愚蠢,但我相信这是有原因的。

Lek*_*eyn 19

.gz.xz.bz2.7z.lz.z后缀来明确该文件与所述压缩算法进行压缩。它的用途不仅限于.tar文件,您还将看到诸如initrd.gz(压缩的初始 ramdisk)或manual.txt.gz(用于压缩文本文档)之类的文件。您可能还会看到file.tgz这也表示 gzip 压缩的 tarball(如file.tar.gz)。

文件扩展名是一种约定,它不一定描述文件内容。要检查您正在处理的文件类型,请使用该file命令。例子:

$ file data.tar.gz
data.tar.gz: gzip compressed data, from Unix
$ gunzip -c data.tar.gz | file -
/dev/stdin: POSIX tar archive (GNU)
Run Code Online (Sandbox Code Playgroud)

根据我的经验,gzip 压缩文件 ( .gz) 是最常见的文件。它的压缩和解压缩速度很快,尽管还有其他算法可以产生更好的压缩率。


Ser*_*gey 8

除了@Lekensteyn 的回答之外,我想补充一点,这种行为基于“做一件事并做好”的哲学——tar程序知道如何将多个文件放入一个流中(带.tar扩展名),gzip知道如何压缩一个单个文件(添加.gz扩展名)*。通过组合这些工具,您可以创建一个将多个文件压缩为一个.tag.gz文件的命令。

这种方法非常灵活——你可以结合一些标准的 Unix 命令来做各种各样的事情。例如,如果您编写了一个更好的程序来压缩文件,则不需要修改tar以启用它来创建.tar.mymegazip文件 - 相反,您只需将tar的输出通过管道传输到您的压缩器。

同样,tar对 SSH 一无所知,但是通过组合命令,您可以创建一个脚本来存档文件,通过 SSH 将它们上传到远程机器并在那里取消存档。

将此与zip并非源自 Unix 的命令进行比较- 它具有内置工具来压缩整个目录、加密文件、将存档拆分为较小的 zip 文件等。


(脚注) - 是的,tar可以使用-z-j开关自行 gzip 或 bzip 文件,它们是为了方便而添加的,并且 GNU tar 实际上正在生成gzipbzip2作为一个新进程。