谁能告诉我这么多档案是怎么回事,它们有什么不同?
我能想到的至少有五个.tar.tz
,,,,,.tar.gz
.tar.bz2
.tar.lz
.tar.z
哪种最适合哪种应用程序?对同一个文件进行如此多的改动似乎很愚蠢,但我确信这是有原因的。
答案1
.gz
、、、、、后缀用于明确表示文件是使用所述压缩算法压缩的。它的用途不仅限于文件,您还会看到诸如(压缩的初始 ramdisk)或(用于压缩的文本文档)之类的文件。您还可能会看到.xz
哪些.bz2
也表示 gzip 压缩的 tarball(如)。.7z
.lz
.z
.tar
initrd.gz
manual.txt.gz
file.tgz
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
) 是最常见的。它的压缩和解压缩速度很快,尽管还有其他算法可以产生更好的压缩率。
答案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 实际上是在产生gzip
或bzip2
作为一个新的过程。