当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

最近,我一直在备份大量数据,并且我注意到可以将文件另存为.gz.tar.gz,或.7z.tar.7z等。正常的和.tar.*变体之间有什么区别?在制作备份时,他们中的哪一位会被告知?

最佳解决办法

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

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

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

gzip压缩一个文件(仅)。

因此,为了获得一个压缩的压缩文档,您可以将两者合并,首先使用tarpax将所有文件合并到一个文件(archive.tar),然后使用gzip它(archive.tar.gz)。如果只有一个文件需要压缩(notes.txt),则不需要tar,因此您只需执行gzip notes.txt即可生成notes.txt.gz。还有其他类型的压缩,例如compressbzip2xz,其工作方式与gzip相同(除了使用不同类型的压缩技术之外)

次佳解决办法

这取决于你在找什么……压缩或存档?

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

压缩可能会忽略大部分内容,只是将文件放在较小的包中。

要保留文件权限,请使用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:”update”:

tar cpPvf backup.tar folder

然后进行更新,用’u’替换’c’,并且在解包时,可以使用’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可能无法转储文件元数据。 It’s 7z’s排除文件元数据的能力,它可以提供很好的压缩(当然还有其他的东西)。

压缩也完全依赖于数据类型。某些文件压缩不好,因为它们可能已经被其他方式压缩(即.mp3,.jpg,.tiff /with lzma,.rpm等)。

第三种解决办法

gzip或bzip2不知道file system – 文件名,目录,树形结构。只是压缩输入流,然后输出结果。即使gzip或bzip2也不能将目录独立存档。这就是为什么结合焦油。

tar(存档) – 只是档案文件结构。 gzip,bzip2(压缩器) – 只是压缩输入。

我认为这个策略来自‘do one thing well’ unix哲学。焦油效果很好?离开它。需要比gzip更多的压缩比率?这里是bzip2或7zip。

第四种办法

它不同的压缩方式,tar本身就被简单归档(很少压缩或不压缩)。 tar.gz是一个tar档案,但内容由gzip(中等压缩)压缩,因此.gz和tar.7z使用7zip压缩(通常是超高压缩)

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

第五种办法

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

但是,在Linux /Unix中,无论如何都可以命名文件,因此它完全由文件的创建者决定。

第六种办法

Tar(磁带归档器)传统上被用作Unix /Linux中的一个容器来打包文件以便移动。它打包文件结构并维护文件属性,但不压缩文件。

压缩程序压缩文件使其更小,但它们可能无法处理多个文件,并且/或者它们可能无法处理Linux所需的文件属性。由于tar已经存在并且是well-supported,所以没有理由将程序归档到这个功能上,这是platform-specific(对于Windows和Linux来说是不同的)。而且,不同的压缩程序可能在不同类型的文件上表现不同,因此选择多于一个是合意的。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/388.html,未经允许,请勿转载。