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

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

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

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

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

答案1

.gz、、、、、后缀用于明确表示文件是使用所述压缩算法压缩的。它的用途不仅限于文件,您还会看到诸如(压缩的初始 ramdisk)或(用于压缩的文本文档)之类的文件。您还可能会看到.xz哪些.bz2也表示 gzip 压缩的 tarball(如)。.7z.lz.z.tarinitrd.gzmanual.txt.gzfile.tgzfile.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)

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

答案2

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

这种方法非常灵活 - 您可以组合一些标准 Unix 命令来执行各种操作。例如,如果您编写了一个更好的程序来压缩文件,则无需修改tar即可使其能够创建.tar.mymegazip文件 - 相反,您只需将tar的输出通过管道传输到压缩器即可。

同样,tar对 SSH 一无所知,但通过组合命令,您可以创建一个脚本,该脚本存档文件,通过 SSH 将其上传到远程计算机,然后在那里取消存档。

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


(脚注)——是的,tar能够使用-z和开关对文件本身进行 gzip 或 bzip-j压缩,它们是为了方便而添加的,而 GNU tar 实际上是在产生gzipbzip2作为一个新的过程。

相关内容