如何解压缩.tar.gz文件(适用于 Linux 和 Windows)

如何解压缩.tar.gz文件

如何解压缩 .tar.gz 文件(适用于 Linux 和 Windows)从视频到整个软件包,许多文件都使用 .tar.gz 格式压缩和存储。虽然解压缩 .tar.gz 文件并不像解压 .zip 文件那么容易,但仍然非常简单。

随着软件功能越来越强大,媒体数据越来越丰富,文件大小继续以指数速度增长。因此,以 .tar.gz 压缩格式存储和发送文件变得越来越普遍。

然而,压缩和提取这些文件并不总是那么直观。在本指南中,我们将提供在 Linux 和 Windows 中解压缩 .tar.gz 文件的基本指南,以及一些有用的提示和技巧。

什么是 .tar 和 .tar.gz 文件?

.tar 文件是压缩成单个文件或归档文件的文件集合。TAR “是 “Tape ARchive” 的缩写,是对磁带驱动器存储文件时代的回溯。

值得庆幸的是,你不需要成为 1960 年代的电脑技术员就能使用和提取 .tar 文件,现代的 .tar 文件甚至与旧电脑没有任何关系。

就像人们更熟悉的 .zip 文件一样,.tar 文件也能将大文件压缩成一个单独的文件包,从而更容易通过电子邮件、服务器等方式存储和发送这些文件。因此,它已成为许多开源软件包和其他资源的常用文件扩展名。

既然.zip 和.tar 都更容易使用,那为什么还要使用.tar 呢?我们将在下一节中看到,.tar 具有一些额外的功能,使其成为某些文件和应用程序的更好压缩格式。

.tar vs .zip

大多数操作系统都能轻松解压和创建 .zip 文件,但 .tar 文件却并非如此–至少不容易注意到。

当然,这并不是说 .tar 文件比 .zip 格式 “次”。相反,它们都以相同的方式完成相同的任务(文件压缩)。下面我们就来看看它们是如何工作的。

  • .tar 文件未压缩文件的集合,有时也称为 tar 包。由于 .tar 并不压缩任何东西,因此它需要一个单独的压缩工具来进行压缩。正如我们稍后将看到的,一种常用的压缩工具是 gzip,它能将 .tar 压缩成 .tar.gz 文件。
  • zip 文件压缩文件的集合。与使用单独的压缩工具来压缩整个文件集不同,.zip 会自动压缩文件集中的每个文件。

现在,你可能已经注意到 .tar 和 .zip 文件的主要区别:压缩方法。

.zip 文件由许多单独压缩的文件组成,而 .tar 文件是作为一个单独的压缩包压缩的,其文件未经压缩。换句话说,.zip 文件是压缩文件的集合,而 .tar 文件是压缩文件的集合。

但压缩方法真的重要吗,尤其是如果两种方法在技术上都能生成压缩文件?

这要看情况。在发送和存储方面,.zip 和 .tar.gz 文件都能让你以单个文件的形式发送相对较大的软件包。不过,在访问文件中的数据和压缩效率方面,两者还是有很大区别的。

  • .zip 文件更容易访问。由于 .zip 文件中的数据是单独压缩的,因此也可以单独访问。相比之下,.tar.gz 文件中的数据只有在解压缩整个文件后才能访问。
  • .tar.gz 文件更节省空间。由于 .tar 文件是作为单个实体而不是一组单独压缩的文件进行压缩的,因此压缩实用程序可以将文件之间的相似性进行分组,从而减少空间。换句话说,将文件压缩为一个单独的组,可以采用更有效的压缩方法,从而节省空间并减小文件的整体大小。

如果还不太明白,也不用担心。抛开技术细节不谈,你只需要记住,.zip 文件更易于访问,但空间效率较低;而.tar 文件更易于访问,但空间效率较高。因此,一个并不一定比另一个好,关键在于应用。

.tar 和 .tar.gz 文件有什么区别?

虽然 .tar 和 .tar.gz 都指文件归档,但 .tar.gz 文件是使用 gzip 工具压缩或 “压缩 “的 .tar 文件。使用 gzip 压缩后,文件的后缀名就变成了”.gz”。

虽然 gzip 是最常用的压缩工具,但它并不是唯一的压缩工具。如你所想,在 .tar 文件上使用不同的压缩工具会产生不同的双扩展名。一些常见的例子包括 .tar.bz2 (bzip2)、.tar.br (Brotli) 和 .tar.zst (zstd),等等。

正如我们稍后将看到的,不同的压缩工具可能需要不同的方法来解压和解压缩文件。虽然我们将主要关注 .tar.gz 文件,但请查看文章末尾有关解压缩其他格式 .tar 文件的一些快速提示。

否则,请继续阅读,了解如何在 Linux、macOS 和 Windows 中解压缩 .tar.gz 文件。

如何在 Linux 终端解压缩 .tar.gz 文件?

大多数 Linux 发行版和 macOS 都包含用于压缩和解压缩 .tar 和 .tar.gz 文件的内置工具。虽然 tar 实用程序足以满足大多数用途,但你需要使用 gzip 实用程序来创建 .tar.gz 文件。

在 Linux 中解压缩 .tar.gz 文件

你可以使用 tar 工具解压缩大多数 .tar.gz 和其他压缩 .tar 文件。

最简单的方法是打开终端(CTRL+ALT+T)并导航到要解压缩的 .tar.gz 文件的目录。然后输入以下命令:

将 .tar.gz 文件解压缩到当前工作目录:

 tar -xf filename.tar.gz

该命令将解压缩 ( -x ) 指定的文件 ( -f ) (本例中为 filename.tar.gz)到当前目录。请注意,该命令也适用于其他常见的压缩格式,如 .tar.bz2。

tar 命令还有其他几个选项。与许多 Linux 命令一样,其中一个选项是 verbose output ( -v ),可将解压缩后的文件打印到终端窗口:

将 .tar.gz 文件解压缩到当前工作目录并打印输出:

tar -xvf filename.tar.gz

同样,上述命令默认将解压缩到当前工作目录。你可以使用 -C 选项解压缩到不同的目录(本例中为 /home/user/files)。

将 .tar.gz 文件解压缩到不同的工作目录:

tar -xf filename.tar.gz -C /home/user/files

在 Linux 中仅从 .tar.gz 文件中提取特定文件或目录

tar 命令还支持只从 .tar.gz 文件中提取特定文件或目录。只需添加一个空格分隔的列表,列出你要提取的文件。

从 .tar.gz 文件中提取 file1 和 directory1 到当前工作目录:

tar -xf filename.tar.gz file1 directory1

请注意,除非指定 .tar 文件中列出的确切文件名,否则该命令会出错。正如我们将在下一节详细介绍的那样,你可以使用 tar -tf filename.tar.gz 命令列出内容来验证文件名。

你还可以使用 --wildcards 命令来提取具有特定扩展名或名称的所有文件。

从 .tar.gz 文件中提取所有以 “.txt” 结尾的文件:

tar -xf filename.tar.gz --wildcards '*.txt'

在 Linux 中从 stdin 解压缩 .tar.gz

您也可以直接从标准输入流 (stdin) 中解压缩 .tar.gz 文件,方法是使用解压缩选项 ( -z ) 将其导入 tar 命令。

例如,如果你想提取位于 ” https://www.wbolt.com/filename.tar.gz” 的 .tar.gz 文件(这里实际上并没有 .tar.gz 文件,但请耐心等待),你可以使用 wget 命令,并将其导入 tar 命令。

从 URL 提取 .tar.gz 文件:

wget -c https://kinsta.com/filename.tar.gz -O - | sudo tar -xz

在 Linux 中列出 .tar.gz 文件的内容

列出 .tar.gz 文件的内容通常很有用,而不必解压缩整个压缩包。 -list ( -t ) 选项将输出文件名列表。

列出 .tar.gz 文件的内容:

tar -tf filename.tar.gz

你还可以添加详细输出选项 ( -v ),提供详细列表,包括日期、证券/权限等。

列出 .tar.gz 文件的详细内容:

tar -tvf filename.tar.gz

许多压缩实用程序还提供自己的命令,用于列出压缩文件的内容。例如,gzip 允许使用以下命令列出 .gz 文件的内容:

用 gzip 列出 .gz 文件的详细内容:

gzip -l filename

使用 gzip 在 Linux 中压缩和解压缩 .tar 和 .tar.gz 文件

你可以使用 gzip 等压缩工具创建自己的 .tar 压缩文件。Gzip 是最受欢迎的可用选项之一,尤其是因为它已内置在大多数 Linux 发行版和 macOS 中。

在终端中,导航到要压缩的 .tar 文件的工作目录,然后输入以下命令即可:

使用 gzip 压缩 .tar 文件:

gzip filename.tar

使用解压 ( -d ) 选项解压 .tar.gz 文件也同样简单。

使用 gzip 解压 .tar.gz 文件:

gzip -d filename.tar

如果你想在压缩后保留原始文件,有两个选项。第一个是 -k 选项,另一个是使用 -c 选项将压缩后的文件输出到另一个文件,保留原始文件。

压缩 .tar 文件并保留原始副本:

gzip -c filename.tar

压缩 .tar 文件并存储为另一个文件:

gzip -c filename.tar > newfilename.tar.gz

tar 工具一样,gzip 也可以一次压缩和解压缩多个文件或整个目录。

压缩多个文件:

gzip file1 file2

解压多个文件:

gzip -d file1 file2

压缩目录中的所有文件:

gzip -r directory1

解压缩目录中的所有文件:

gzip -dr directory1

如何在 Windows 10 中解压缩 .tar.gz 文件?

与 Linux 和 macOS 一样,Windows 10 操作系统也内置了 tar 实用程序。

与 Windows 方便的图形用户界面 (GUI) 解压缩 .zip 文件不同,您需要通过命令行使用 tar 实用程序。不过,你也可以安装许多第三方工具,以获得更友好的使用体验。

使用命令行 (cmd)

要访问 Windows 命令行,请在搜索栏中搜索 “命令提示符” 或 “cmd”。右键单击第一个结果,选择 “以管理员身份运行” 选项。

在 Windows 10/11 中搜索 "cmd"

在 Windows 10/11 中搜索 “cmd” 后出现的命令提示符图标

打开命令提示符后,使用适当的命令将当前工作目录 ( cd ) 更改为要解压缩的 .tar.gz 文件的位置。或者,在使用 tar 工具时,也可以指定源文件和目标文件路径。

键入以下命令之一并按 “Enter”。

将 .tar.gz 文件解压缩到当前工作目录:

tar -xvzf filename.tar.gz

将 .tar.gz 文件从源路径解压缩到目标路径:

tar -xvzf C:\PATH\TO\SOURCE\filename.tar.gz -C C:\PATH\TO\DESTINATION

请注意,Windows 中 tar 工具的语法与 Linux 和 macOS 中的几乎相同。在这里,我们使用了提取 ( -x )、verbose ( -v )、使用 gzip ( -z ) 解压缩和文件 ( -f ) 选项,以获得完整的提取、解压缩和详细输出。

使用第三方工具

如果你不喜欢使用命令行,还有很多用户友好型工具可用于解压缩 tar.gz 文件。

使用 7-Zip 将大量文件压缩成 .zip 文件

使用 7-Zip 将大量文件压缩成 .zip 文件

虽然有许多工具可供选择,但最流行的还是 7-ZipWinZip。虽然它们略有不同,但都非常轻便,是使用命令行之外的另一种更简单的选择。

一些第三方工具还提供了文件类型间转换的更大灵活性,如果你想在不同压缩格式间转换,可以节省更多时间。许多工具还适用于 Linux 和 macOS。

7-Zip 的兼容性选项

7-Zip 的兼容性选项,包括 .tar 和 .gz。

不过,虽然 7-Zip 等工具是免费的,但许多更 “强大” 的解决方案只有在试用期后才有价格。因此,我们建议坚持使用免费(但值得信赖)的工具或直接使用命令行。

常见错误诊断

并非每次 .tar.gz 解压缩都能天衣无缝,尤其是在使用命令行的情况下!

命令行很少(如果有的话)有错字或遗漏,许多常见错误都是小错误、拼写错误或格式不正确造成的。值得庆幸的是,除非你丢失了 targzip 工具,大多数常见错误都很容易修复。

tar: README: Not found in archive

尝试使用 tar 从 .tar.gz 文件中提取特定文件或目录时,会出现此错误。

Error Input:

tar -xf filename.tar.gz FILE

Error Output:

tar: FILE: Not found in filename
tar: Exiting with failure status due to previous errors

在本例中,用户试图从 filename.tar.gz 中提取名为 “FILE” 的文件。然而,tar 无法在 .tar.gz 中找到 FILE,这意味着用户拼错了文件名,或者 filename.tar.gz 中根本不存在该文件。另一个常见的错误原因是大小写敏感性,Linux 将 “FILE” 和 “file” 视为两个独立的实体。

解决办法:使用 tar -tf filename.tar.gz 列出内容,检查拼写和/或验证文件是否存在于 .tar.gz 存档中。

tar: Archive is compressed. Use -z option

如果尝试解压文件而未指定解压实用程序,特别是 -z 用于 gzip ,则会出现此错误。

Error Input:

wget -c https://www.wbolt.com/filename.tar.gz -O - | sudo tar -x

请注意,最右边的 sudo tar -xz 中缺少了” -z “。

Error Output:

tar: Archive is compressed. Use -z option
tar: Error is not recoverable: exiting now

解决方案:tar 命令中指定解压缩选项,如 gzip ( -z )。

gzip: stdin: not in gzip format

许多用户报告说,运行了 “正确” 的命令,却发现他们的 .tar.gz 文件 “不是 gzip 格式” – 尽管扩展名为 .gz。

Error Output:

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors

这种错误通常发生在 .tar 文件被保存为 .gz 文件时,尽管该文件从未使用 gzip 工具压缩过。这听起来可能是个愚蠢的错误,但在用户直接重命名文件及其扩展名(如 .tar 和 .gz)的过程中,这种错误却非常常见。

解决方法:查找 .tar.gz 文件的新副本,或使用 tar -xf filename.tar 将其解压缩为 .tar 文件。如果该命令也出错,下一个解决方案可能会有帮助。

tar: Unrecognized archive format

与前一个错误类似,当存档被保存为 .tar 格式,而不是 .tar 存档时,也会出现这个错误。

Error Output:

tar: Unrecognized archive format
tar: Error exit delayed from previous errors.

解决方案:查找 .tar 或 .tar.gz 文件的新副本,或尝试用 gunzip filename.tar.gz 。如果 gunzip 命令不起作用,可尝试用 tar -xvf filename.tar.gz 命令的冗余输出列出内容,看看是否有特定文件导致了问题。不过,更有可能的情况是,文件一开始就没有正确压缩成 .tar 文件。

常见问题

在浏览 .tar、.tar.gz 和 .gz 文件时很容易混淆,更不用说压缩和解压缩了。以下是我们在处理 .tar.gz 文件时经常听到的几个常见问题。

如何打开 .tar.gz 文件?

您可以使用 Linux、macOS 和 Windows 10 内置的 tar 命令打开大多数 .tar.gz 文件。如果你不习惯使用终端或命令行,第三方工具(如 7-Zip)提供了更方便用户使用的替代方法。

.gz 是 .tar 文件吗?

虽然每个 tar.gz 文件都是 .tar 压缩包,但并非每个 .gz 文件都是 .tar 文件。.gz 扩展名代表 gzip 压缩格式,几乎可用于任何文件格式,以压缩数据并节省空间。

.tar.gz 和 .zip 一样吗?

虽然 .zip 和 .tar.gz 都能归档和压缩文件,但它们的方式不同。.zip 归档和压缩单个文件,而 .tar 只归档单个文件,让 .gz (gzip) 等单独的压缩格式将所有文件压缩为单个文件/归档文件。换句话说,.zip 是压缩文件的集合,而 .tar.gz 是压缩文件的集合。

.tar.gz 比 .zip 更高效吗?

是的。由于 .tar.gz 一次压缩多个文件,它可以利用单个文件之间的相似性来节省空间。一般来说,归档并压缩为 .tar.gz 的文件集比压缩为 .zip 的文件集更节省空间(即更小)。

小结

随着 Linux、macOS 和 Windows 10 提供内置 tar 工具,通过命令行解压缩 tar.gz 文件比以往任何时候都要简单。通常,你唯一需要的命令是

tar -xvzf filename.tar.gz

与许多归档和压缩格式一样,.tar.gz 是节省存储空间和方便发送大量数据的有效方法。

评论留言