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

Exe*_*n-G 180 backup compression

最近,我一直在备份我的很多数据,我注意到我可以将文件保存为.gzor .tar.gz、 or.7z.tar.7z等等。普通版和.tar.*变体版有什么区别?备份时建议使用其中的哪一个?

gei*_*rha 212

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

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

  • tar 将多个文件放入一个 (tar) 文件中。
  • gzip 压缩一个文件(仅)。

因此,要获得压缩档案,请将两者结合起来,首先使用tarpax将所有文件放入一个文件 ( archive.tar) 中,然后使用gzip它 ( archive.tar.gz)。

如果您只有一个文件,则需要压缩 ( notes.txt): 不需要tar,因此您只需执行gzip notes.txt这将导致notes.txt.gz. 还有其他类型的压缩,例如compressbzip2xz其工作在相同的方式gzip(除了使用不同类型的过程的压缩的)。

  • @Exeleration-G 阅读其他答案后,我看到 SaultDon 回答了这个问题;7zip 不存储归档文件的 unix 所有权和权限(它似乎主要面向 Windows,如 zip 和 rar),因此将其与 tar 结合使用以保留所有权和权限是有意义的。 (45认同)
  • 这是有道理的,但是,为什么我可以从多个文件创建一个 `.7z` 存档,而我也可以从多个文件创建一个 `.tar.7z` 存档? (8认同)
  • @Exeleration-G 7zip 不遵循此方案。它更像是 zip 和 rar。不确定将 tar 与 7zip 结合使用的意义是什么,因为我自己没有使用过 7zip。 (4认同)
  • 根据我的经验,7z 在压缩方面比 zip 好得多。当我测试时,它为我节省了 40% 的额外费用 (2认同)

Sau*_*Don 54

这取决于您正在寻找什么...压缩或存档?

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

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

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

tar cpvf backup.tar folder
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

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

tar cpPvf backup.tar folder
Run Code Online (Sandbox Code Playgroud)

然后更新,用“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
Run Code Online (Sandbox Code Playgroud)

P 标志使用完整路径保存文件,因此 - /home/username 与 home/username (注意前导正斜杠)。

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

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

压缩也完全取决于数据类型。一些文件不能很好地压缩,因为它们可能已经用其他方式压缩过(例如,.mp3、.jpg、.tiff/with lzma、.rpm 等)。


Mai*_*ait 12

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

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

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


小智 8

它的不同压缩风格,tar 本身只是简单地存档(几乎没有压缩)。tar.gz 是 tar 存档,但内容由 gzip(中等压缩)压缩,因此 .gz 和 tar.7z 使用 7zip 压缩(通常是超高压缩率)

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


G. *_* He 5

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

然而,在 Linux/Unix 中,人们几乎可以按照自己的意愿命名文件,因此完全由文件创建者自行决定。


Mar*_*ied 5

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

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