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

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

最近,我备份了很多数据,我发现我可以将文件另存为.gz.tar.gz,或.7z.tar.7z等。普通版和变体版之间有什么区别.tar.*?备份时建议使用哪一种?

答案1

如果您有使用 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。还有其他类型的压缩,例如compressbzip2和,xz其工作方式与相同gzip(当然,除了使用不同类型的压缩)。

答案2

这取决于您在寻找什么...压缩还是归档?

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

压缩可能会忽略其中的大部分内容,而仅将文件打包成更小的包。

要保留文件权限,请使用 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 与 home/username (注意前导斜杠)。

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

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

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

答案3

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

tar(归档器)-仅归档文件结构。gzip,bzip2(压缩器)-仅压缩输入。

我认为这个策略来自于‘做好一件事’Unix 哲学。Tar 工作正常?保持原样。需要比 gzip 更高的压缩率?这里有 bzip2 或 7zip。

答案4

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

然而,在 Linux/Unix 中,人们可以随心所欲地命名文件,因此这完全由文件创建者的自行决定。

相关内容