如何在 Linux 中使用 tar 和 gzip 命令压缩和解压文件
文件压缩是在不同计算机和服务器之间传输文件的一种高效方式。Linux 管理员经常需要执行归档、压缩和解压文件等任务。归档文件是包含多个文件或目录的单个文件。如果您见过扩展名为 .tar、.tar.gz、.xz 或 .bz2 的 tar 文件,它们很可能就是由 .tar 工具生成的。
这些归档文件可以节省本地磁盘空间,并方便通过互联网下载。下载归档文件后,用户可以使用解压工具在自己的系统上提取文件。Linux 发行版提供了多种命令行工具,尤其是借助 tar gzip 命令,可以高效地压缩或解压大型归档文件。
本指南将演示如何在 Linux 系统上使用 tar 和 gzip 命令对文件进行归档、压缩和解压。我们将使用 Ubuntu 22.04 Linux 发行版来执行所有命令。
什么是 tar?
tar 是“tape archive”(磁带归档)的缩写,是一款广泛使用的命令行文件压缩工具,用于创建压缩归档和解压归档。
压缩归档包含多个文件和目录,其扩展名为 .tar、.tar.gz、.xz 或 .bz2 等,这类文件被称为 tarball。在 Linux 中,开发者可以通过 tar gz 文件分发源代码和重要文件。此外,您还可以使用 tar、gzip 和 bzip2 工具将文件压缩或解压为不同的格式。
什么是 gzip?
gzip 是一款适用于 Linux 的单文件流无损压缩工具,可用于同时压缩和解压文件。它同时支持命令行和图形界面,用途十分灵活。
gzip 工具的主要特性包括:可同时压缩多个文件、在终端中执行、采用 LZ77 和 Lempel-Ziv-Welch 算法、缩短过长的文件名,以及自动生成 .gz 文件扩展名。总体而言,gzip 是一款专为 Linux 环境打造的强大且易用的压缩方案。
tar 与 gzip(文件压缩工具)
这两款工具的根本区别在于它们的主要功能:
tar 工具负责将多个文件打包成归档,而 gzip 则用于压缩单个文件。尽管存在这一区别,这两款工具可以配合使用。使用 tar 时,您可以执行 gzip 任务来压缩其打包的文件。在 tar 命令中使用“z”选项,即可将 gzip 集成到 tar 流程中,无缝创建压缩归档。
如何使用 tar 命令压缩文件或目录
使用 tar 压缩文件的基本语法如下:
$ tar -czvf <tar compress file name> </destination path for files/or/directory>
例如,假设当前目录中有一个名为“/home/samreena”的文件或目录。要将该目录压缩为名为 testfile.tar.gz 的归档文件,请执行以下命令:
$ tar -czvf testfile.tar.gz /home/samreena
在上述命令中,tar 是用于压缩文件或目录的命令行工具。之后的标志或选项“-czvf”分别表示:
-c:创建 tar 压缩文件或归档文件
-z:使用 gzip 压缩归档
-v:显示详细信息(verbose),该选项会在创建归档期间于终端窗口中显示进度详情。
-f:该参数用于指定归档文件名。
要进行验证,请使用“ls”命令列出当前目录中的所有文件和目录:
如何将多个文件或目录压缩为一个归档文件
要将多个文件或目录压缩为单个归档,请使用“cd”命令进入所有文件或子目录所在的目录。使用带有相应标志(例如“tar czvf”)的 tar 命令创建压缩归档。例如,要将文件压缩为 gzip 格式的归档,可以使用以下命令:
$ tar -czvf <archive_name.tar.gz> <file1 file2 file3 …>
例如,如果当前的 Documents 目录中有三个名为“index.html”、“testfile.tar.gz”和“testfolder2”的文件,而您希望将它们压缩为名为“test_archive.tar.gz”的归档,可以运行以下命令:
$ tar -czf test_archive.tar.gz index.html testfile.tar.gz testfolder2
这将创建一个名为 test_archive.tar.gz、包含指定文件的压缩归档。
如何在归档时排除文件或目录
在归档目录时,经常会遇到需要将某些文件排除在归档之外的情况。此时,您可以使用 --exclude 选项来指定要从所创建的归档中排除的文件。与 --exclude 选项中指定模式相匹配的文件,将自动被排除在 tar 归档之外。要在归档时排除文件,请使用以下命令:
$ tar --exclude='*.html' -czvf test_archive.tar.gz /home/samreena
如何使用 tar 命令从归档中解压文件或目录
在 Linux 中使用 tar 命令解压文件时,需要注意 tar 是大多数 Linux 发行版的默认工具,支持 bzip2、gzip、lzip、lzop、lzma、xz 和 compress 等多种压缩格式。创建 tar 归档时,建议在归档文件名中加上相应的后缀,以表明其压缩格式。例如,假设您有一个使用 gzip 压缩的 tar 归档,文件名为“test_archive.tar.gz”。要解压该压缩的 tar 文件,可以使用以下语法:
$ tar -xf test_archive.tar.gz
如果您希望在解压过程中列出所有文件名,请使用“-v”选项:
$ tar -xvf test_archive.tar.gz
需要注意的是,默认情况下,此命令会将 tar 归档的内容解压到当前工作目录中。
如何将归档解压到指定目录
要将 tar 文件解压到其他目录而非当前目录,请使用“-C”选项并指定目录路径。
假设您想将归档内容解压到“home/samreena”中,请使用以下命令指定目录路径和归档名称:
$ tar -xvf test_archive.tar.gz -C /home/samreena
如何从归档中解压特定文件或目录
有时,您需要从 tar 归档中解压特定的文件或目录,而不是解压全部内容。为此,可以在命令中的归档名称之后,列出以空格分隔的文件或目录名称。
例如,假设您想从 tar 归档中解压“index.html”和“testfolder2”,可以在终端中执行以下命令:
$ tar -xf test_archive.tar.gz index.html testfolder2
如果尝试解压归档中不存在的文件,命令会显示“Not found in archive”错误信息作为反馈:
$ tar -xf test_archive.tar.gz README
tar 命令的选项:
x:用于解压 tar 归档或归档中的特定文件。
v:在处理归档期间显示详细信息或文件名。
f:告诉 tar 要操作哪些文件。
t:显示归档中包含的文件名列表。
结论
在本教程中,我们演示了如何在 Linux 中使用 tar 和 gzip 工具压缩或解压文件。这两款工具都非常适合在系统中压缩和解压文件及目录。如果您正在使用 Linux VPS 服务器,借助这些工具可以高效地完成文件压缩和解压。如有任何问题,欢迎随时提问。