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

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

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

哪种应用最好? 制作相同文件的这么多变体似乎很愚蠢,但我确信这是有原因的。

.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) 

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

除了@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作为一个新进程生成的。