.tar.gz和.gz或.tar.7z和.7z有什么区别?


158

最近,我一直在备份很多数据,我注意到我可以将文件另存为.gz.tar.gz,或.7z.tar.7z,等等。普通款和.tar.*变型款有什么区别?进行备份时建议使用哪一个?

Answers:


183

如果您来自Windows背景,则可能熟悉zip和rar格式。这些是压缩在一起的多个文件的存档。

在Unix和类似Unix的系统(如Ubuntu)中,归档和压缩是分开的。

tar 将多个文件放入一个(tar)文件中。

gzip 压缩一个文件(仅)。

因此,要获得压缩的存档,可以将两者结合起来,首先使用tarpax将所有文件放入一个文件(archive.tar),然后再将gzip其存档(archive.tar.gz)。如果你只有一个文件,你需要压缩(notes.txt),没有必要对焦油,所以你只是做gzip notes.txt这将导致notes.txt.gz。还有其他类型的压缩,例如compressbzip2xz其中以相同的方式如gzip的工作(除了使用不同类型的过程的压缩的)


6
那是有道理的,但是,为什么为什么我可以.7z从多个文件中创建档案,而同时我也可以.tar.7z从多个文件中创建档案呢?
Exeleration-G 2012年

3
@ Exeleration-G 7zip不遵循此方案。它更像zip和rar。不知道将tar与7zip结合使用的意义是什么,因为我自己还没有使用7zip。
geirha

42
@ Exeleration-G阅读完其他答案后,我看到SaultDon回答了这个问题;7zip不存储已归档文件的unix所有权和权限(似乎主要针对Windows,例如zip和rar),因此将其与tar结合以保留所有权和权限是有意义的。
geirha

@geirha如果找到合适的答案,则将问题标记为已解决。
拉维

1
以我的经验,7z在压缩方面比zip更好。当我测试时,它为我节省了40%的额外费用
Eoin

49

这取决于您要寻找的内容...压缩还是归档?

当我谈论归档时,我的意思是保留权限,目录结构等。

压缩可能会忽略大多数情况,只是将文件放在较小的程序包中。

要保留文件权限,请使用tar:

tar cpvf backup.tar folder

p标志将保存文件权限。使用z标志进行gzip压缩,使用j标志进行bzip压缩。

tar czpvf backup.tar.gz folder #backup.tgz is acceptable as well
tar cjpvf backup.tar.bz2 folder #backup.tbz2 works too

如果您想要一个tar文件,可以使用P标志“更新”打包tar:

tar cpPvf backup.tar folder

然后进行更新,将“ c”替换为“ u”,然后在解压缩时,可以使用“ k”保留已存在的文件。

tar upPvf backup.tar folder #updating a tar file
tar xpPkvf backup.tar #extracting a tar with permissions(p) and not extracting(k) files that exist on disk already

P标志保存具有完整路径的文件,因此-/ home / username vs home / username(注意前导斜杠)。

7z压缩可提供更大的压缩率,但不会保留文件所有权,权限等。Rzip是另一个压缩实用程序,它也可提供与7z相当的压缩率。

我猜一个backup.tar.7z文件只是一个由7z文件压缩的​​tar文件(具有权限),尽管如果压缩很少,我也不会感到惊讶,因为7z可能无法转储文件元数据。7z可以排除文件元数据,因此可以提供出色的压缩能力(当然还有其他事情)。

压缩也完全取决于数据类型。某些文件无法很好地压缩,因为它们可能已经通过其他方式进行了压缩(例如,.mp3,.jpg,.tiff /带有lzma,.rpm等)。


11

gzip或bzip2不知道file system-文件名,目录或树结构。它只是压缩输入流,然后输出结果。甚至gzip或bzip2也无法单独归档目录,这就是为什么它通常与tar结合使用的原因。

tar(archiver)-仅存档文件结构。gzip,bzip2(compressor)-仅压缩输入。

我认为这种策略来自“把一件事情做好” Unix哲学。焦油效果好吗?保持原样。需要比gzip更多的压缩率吗?这是bzip2或7zip。


实际上7zip可以像zip或rar一样存档。
女仆2012年

8

tar本身具有不同的压缩方式,只是将其存档(几乎没有压缩)。tar.gz是tar归档文件,但是内容由gzip(中等压缩)压缩,因此.gz和tar.7z使用7zip压缩(通常是超高压缩)

备份时,我建议tar.7z,因为它具有最高的压缩率,可以节省您的空间,但要使用额外的程序(7zip)。.tar.gz将是较大的文件,并且会执行相同的工作,您也可以使用bzip(.tar.bz / bz2),尽管我不确定是否更适合您,因为我使用gzip或7zip


4

通常,*。tar文件只是由tar程序创建的tar文件,*。gz程序是由gzip创建的,*。tar.gz(有时也* .tgz)是gzip压缩的tar文件,而* .7z是由7zip创建的。

但是,在Linux / Unix中,几乎可以随意命名文件,因此完全由文件创建者决定。


3

传统上,Tar(Tape Archiver)被用作Unix / Linux中的容器来打包文件以供移动。它打包文件结构并维护文件属性,但不压缩文件。

压缩程序压缩文件以使其更小,但是它们可能无法处理多个文件,并且/或者可能无法处理Linux所需的文件属性。由于tar已经存在并且得到了很好的支持,因此无需归档程序来复制此功能,该功能是特定于平台的(对于Windows和Linux,则有所不同)。同样,不同的压缩程序可能对不同类型的文件执行不同的操作,因此希望选择多个压缩程序。

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.