所有不同类型的.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实际上是将gzip
或bzip2
作为一个新进程生成的。