如何在 Linux 上使用 tar 命令压缩和提取文件

已发表: 2022-07-23

压缩的 Tarball 标头 Ubuntu

Linux 上的 tar 命令通常用于创建 .tar.gz 或 .tgz 存档文件,也称为“tarball”。 这个命令有很多选项,但是你只需要记住几个字母就可以用 tar 快速创建档案。 tar 命令也可以提取生成的档案。

Linux 发行版中包含的 GNU tar 命令集成了压缩。 它可以创建一个 .tar 存档,然后在单个命令中使用 gzip 或 bzip2 压缩对其进行压缩。 这就是生成的文件是 .tar.gz 文件或 .tar.bz2 文件的原因。

更新,22 年 7 月 18 日:我们已经审查了这篇文章的准确性,并且可以确认它仍然适用于最新版本的 Ubuntu 和其他 Linux 发行版。

压缩整个目录或单个文件

使用以下命令在 Linux 上压缩整个目录或单个文件。 它还将压缩您指定的目录中的所有其他目录——换句话说,它以递归方式工作。

 tar -czvf name-of-archive.tar.gz /path/to/directory-or-file

以下是这些开关的实际含义:

  • -c :创建档案。
  • -z:使用 g z ip 压缩存档。
  • -v:在终端显示创建存档的进度,也称为“ v erbose”模式。 v 在这些命令中始终是可选的,但它很有帮助。
  • -f :允许您指定存档的文件名。

假设您在当前目录中有一个名为“stuff”的目录,并且您希望将其保存到名为archive.tar.gz 的文件中。 您将运行以下命令:

 tar -czvf archive.tar.gz 的东西

或者,假设在当前系统的 /usr/local/something 中有一个目录,您想将它压缩成一个名为 archive.tar.gz 的文件。 您将运行以下命令:

 tar -czvf archive.tar.gz /usr/local/something 

在所需文件夹上运行“tar -czvf”以捆绑并压缩所有内容。

一次压缩多个目录或文件

相关:如何从 Linux 终端管理文件:您需要知道的 11 个命令

虽然 tar 经常用于压缩单个目录,但您也可以使用它来压缩多个目录、多个单独的文件,或两者兼而有之。 只需提供文件或目录的列表而不是单个。 例如,假设您要压缩 /home/ubuntu/Downloads 目录、/usr/local/stuff 目录和 /home/ubuntu/Documents/notes.txt 文件。 您只需运行以下命令:

 tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.txt

只需列出要备份的目录或文件即可。

Ubuntu 终端使用“tar”命令一次压缩多个目录。

排除目录和文件

在某些情况下,您可能希望压缩整个目录,但不包括某些文件和目录。 您可以通过为要排除的每个目录或文件附加--exclude开关来做到这一点。

例如,假设您要压缩 /home/ubuntu,但不想压缩 /home/ubuntu/Downloads 和 /home/ubuntu/.cache 目录。 以下是你的做法:

 tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache

--exclude开关非常强大。 它不需要目录和文件的名称——它实际上接受模式。 你可以用它做更多的事情。 例如,您可以使用以下命令归档整个目录并排除所有 .mp4 文件:

 tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4 

可以调整“tar”命令以选择性地忽略某些文件。

改用 bzip2 压缩

虽然 gzip 压缩最常用于创建 .tar.gz 或 .tgz 文件,但 tar 也支持 bzip2 压缩。 这允许您创建 bzip2 压缩文件,通常命名为 .tar.bz2、.tar.bz 或 .tbz 文件。 为此,只需将此处命令中用于 gzip 的 -z 替换为用于 bzip2 的 -j。

Gzip 更快,但它通常压缩得更少,因此您会得到一个更大的文件。 Bzip2 速度较慢,但​​它压缩得更多,因此您会得到一个更小的文件。 Gzip 也更常见,一些精简的 Linux 系统默认支持 gzip,但不支持 bzip2。 不过,一般来说,gzip 和 bzip2 实际上是相同的东西,并且两者的工作方式相似。

例如,您可以运行以下命令,而不是我们提供的用于压缩 stuff 目录的第一个示例:

 tar -cjvf archive.tar.bz2 东西

终端运行 bzip2 压缩而不是 gzip。

提取档案

一旦你有了一个存档,你可以用 tar 命令解压它。 以下命令会将archive.tar.gz 的内容提取到当前目录。

 tar -xzvf 存档.tar.gz

它与我们上面使用的存档创建命令相同,只是-x开关替换了-c开关。 这指定您要扩展档案而不是创建档案。

您可能希望将存档的内容提取到特定目录。 您可以通过将-C开关附加到命令末尾来执行此操作。 例如,以下命令会将 archive.tar.gz 文件的内容提取到 /tmp 目录。

 tar -xzvf 存档.tar.gz -C /tmp

如果该文件是 bzip2 压缩文件,请将上述命令中的“z”替换为“j”。

使用“-xzvf”而不是“-czvf”参数运行“tar”以从 tarball 存档中提取文件。


这是 tar 命令最简单的用法。 该命令包含大量附加选项,因此我们不可能在此处将它们全部列出。 了解更多信息。 在 shell 中运行info tar命令可以查看 tar 命令的详细信息页面。 完成后按q键退出信息页面。 您也可以在线阅读 tar 的手册。

如果您使用的是图形 Linux 桌面,您还可以使用桌面随附的文件压缩实用程序或文件管理器来创建或提取 .tar 文件。 在 Windows 上,您可以使用免费的 7-Zip 实用程序提取和创建 .tar 档案。

相关:适合开发人员和爱好者的最佳 Linux 笔记本电脑