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


16

谁能告诉我这么多档案的内容,它们有何不同?

我至少可以想到五个.tar.tz.tar.gz.tar.bz2.tar.lz.tar.z

哪种应用最适合?对同一文件进行如此多的变体似乎很愚蠢,但是我敢肯定这是有原因的。

Answers:


18

.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)是最常见的文件。尽管还有其他算法可以产生更好的压缩率,但压缩和解压缩速度很快。


8

除了@Lekensteyn答案,我还要补充一点,这种行为是基于“ 做一件事,并且做得很好”的原理- tar程序知道如何将多个文件放入单个流(带有.tar扩展名),gzip知道如何压缩单个文件(添加.gz扩展名)*。通过组合这些工具,您可以创建一个将多个文件压缩为单个.tag.gz文件的命令。

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

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

将此zip命令与不是起源于Unix的命令进行比较-它具有内置工具来压缩整个目录,加密文件,将归档文件分割成较小的zipfile等。


(脚注)-是的,tar能够使用-z-j开关本身gzip或bzip文件,添加它们是为了方便起见,而GNU tar实际上是在生成gzipbzip2作为新进程生成。


示例:命令tar c dir/ | gzip > dir.tar.gztar czf dir.tar.gz dir/命令执行相同的操作。其中一个例子tar是与SSH和组合tar(再次):tar cz Documents/ | ssh user@host 'tar xz(rsync的当量将是:rsync -a Documents user@host:
Lekensteyn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.