如何解压缩 .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” 后出现的命令提示符图标
打开命令提示符后,使用适当的命令将当前工作目录 ( 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 和 WinZip。虽然它们略有不同,但都非常轻便,是使用命令行之外的另一种更简单的选择。
一些第三方工具还提供了文件类型间转换的更大灵活性,如果你想在不同压缩格式间转换,可以节省更多时间。许多工具还适用于 Linux 和 macOS。
7-Zip 的兼容性选项,包括 .tar 和 .gz。
不过,虽然 7-Zip 等工具是免费的,但许多更 “强大” 的解决方案只有在试用期后才有价格。因此,我们建议坚持使用免费(但值得信赖)的工具或直接使用命令行。
常见错误诊断
并非每次 .tar.gz 解压缩都能天衣无缝,尤其是在使用命令行的情况下!
命令行很少(如果有的话)有错字或遗漏,许多常见错误都是小错误、拼写错误或格式不正确造成的。值得庆幸的是,除非你丢失了 tar
或 gzip
工具,大多数常见错误都很容易修复。
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 是节省存储空间和方便发送大量数据的有效方法。
评论留言