简介
tar(磁带归档)实用程序是 Linux 操作系统中的一个强大工具,它允许你创建、管理和提取文件及目录的存档。本教程将引导你了解 tar 实用程序的基础知识、使用 tar 存档以及探索高级 tar 操作。
了解 tar 实用程序
tar(磁带归档)实用程序是 Linux 操作系统中的一个强大工具,它允许你创建、管理和提取文件及目录的存档。它被广泛用于备份、分发和存储目的。tar 命令可以处理未压缩和已压缩的存档,使其成为各种文件管理任务的通用工具。
tar 的基本概念
tar 实用程序通过将多个文件和目录组合成一个存档文件来工作,同时保留原始文件结构和元数据(如权限、所有者和时间戳)。这个存档文件通常被称为 “tarball” 或 “tar 存档”。
tar 命令的基本语法是:
tar [选项] [存档文件名] [文件或目录]
与 tar 一起使用的最常见选项包括:
-c:创建一个新的存档-x:从存档中提取文件-f:指定存档文件名-v:在操作过程中显示详细输出-z:使用 gzip 压缩或解压缩存档-j:使用 bzip2 压缩或解压缩存档
tar 的应用场景
tar 实用程序在以下场景中被广泛使用:
- 备份和恢复:创建重要文件和目录的备份,并在需要时恢复它们。
- 软件分发:将软件应用程序及其依赖项打包成一个存档,以便于分发。
- 存档和压缩:将多个文件和目录组合成一个单一的、压缩的存档,以实现高效的存储和传输。
- 部署和配置管理:在多个系统上自动部署软件和配置。
示例:创建和提取 tar 存档
让我们来看一个在 Ubuntu 22.04 系统上创建和提取 tar 存档的示例。
要创建 /etc 目录的 tar 存档,可以使用以下命令:
tar -cvf etc.tar /etc
此命令将创建一个名为 etc.tar 的新存档文件,其中包含 /etc 目录的内容。
要提取 etc.tar 存档的内容,可以使用以下命令:
tar -xvf etc.tar
此命令将把 etc.tar 存档中的文件和目录提取到当前工作目录。
你也可以使用 tar 命令创建压缩存档。例如,要创建 /home 目录的 gzip 压缩存档,可以使用以下命令:
tar -czf home.tar.gz /home
此命令将创建一个名为 home.tar.gz 的新存档文件,其中包含 /home 目录的内容,并使用 gzip 算法进行压缩。
使用 tar 存档
一旦你理解了 tar 实用程序的基本概念,就可以开始使用 tar 存档来执行各种文件管理任务了。本节将介绍创建、提取和操作 tar 存档的常见操作。
创建 tar 存档
要创建一个 tar 存档,可以使用 -c(创建)选项和 -f(文件)选项来指定输出文件名。例如,要创建 /home 目录的 tar 存档,可以使用以下命令:
tar -cf home.tar /home
此命令将创建一个名为 home.tar 的 tar 存档,其中包含 /home 目录的内容。
你也可以使用 -z(gzip)或 -j(bzip2)选项创建压缩的 tar 存档。例如,要创建 /etc 目录的 gzip 压缩 tar 存档,可以使用以下命令:
tar -czf etc.tar.gz /etc
此命令将创建一个名为 etc.tar.gz 的 tar.gz 存档,其中包含 /etc 目录的内容,并使用 gzip 算法进行压缩。
提取 tar 存档
要提取 tar 存档的内容,可以使用 -x(提取)选项和 -f(文件)选项来指定输入文件名。例如,要提取 home.tar 存档的内容,可以使用以下命令:
tar -xf home.tar
此命令将把 home.tar 存档的内容提取到当前工作目录。
如果 tar 存档是压缩的,则需要使用适当的解压缩选项(-z 用于 gzip,-j 用于 bzip2)和 -x 选项。例如,要提取 etc.tar.gz 存档的内容,可以使用以下命令:
tar -xzf etc.tar.gz
此命令将提取 etc.tar.gz 存档的内容,并使用 gzip 算法解压缩文件。
列出 tar 存档的内容
可以使用 -t(列出)选项查看 tar 存档的内容而不提取它。例如,要列出 home.tar 存档的内容,可以使用以下命令:
tar -tf home.tar
此命令将显示 home.tar 存档中包含的所有文件和目录的列表。
同样,要列出压缩的 tar 存档的内容,可以使用适当的解压缩选项(-z 用于 gzip,-j 用于 bzip2)和 -t 选项。例如,要列出 etc.tar.gz 存档的内容,可以使用以下命令:
tar -tzf etc.tar.gz
此命令将显示 etc.tar.gz 存档中包含的所有文件和目录的列表。
高级 tar 操作
虽然上一节介绍的基本 tar 操作足以满足许多文件管理任务,但 tar 实用程序还提供了一系列高级功能和选项,可帮助你自定义和优化存档工作流程。本节将探讨其中一些高级 tar 操作。
详细模式和进度监控
默认情况下,tar 命令在存档或提取过程中不会提供详细输出。但是,你可以使用 -v(详细)选项来显示正在处理的文件和目录的名称。这对于监控大型 tar 操作的进度很有用。例如:
tar -cvf backup.tar /home /etc
此命令将创建一个名为 backup.tar 的 tar 存档,其中包含 /home 和 /etc 目录的内容,并在将文件和目录添加到存档时显示它们的名称。
排除和包含文件
有时,你可能希望从 tar 存档中排除特定的文件或目录,或者只包含文件的一个子集。你可以使用 --exclude 选项指定要排除的文件或目录,使用 --include 选项包含特定的文件或目录。
例如,要创建一个排除 /home/user/tmp 目录的 tar 存档,可以使用以下命令:
tar -czf backup.tar.gz --exclude=/home/user/tmp /home /etc
此命令将创建一个名为 backup.tar.gz 的 gzip 压缩 tar 存档,其中包含 /home 和 /etc 目录的内容,但排除 /home/user/tmp 目录。
相反,要创建一个只包含 /home/user/documents 目录的 tar 存档,可以使用以下命令:
tar -czf documents.tar.gz --include=/home/user/documents /home
此命令将创建一个名为 documents.tar.gz 的 gzip 压缩 tar 存档,其中只包含 /home/user/documents 目录的内容。
更新和追加到 tar 存档
tar 实用程序还允许你更新或追加文件到现有的 tar 存档。当你需要将新文件添加到现有的备份或发行版时,这会很有用。
要更新现有的 tar 存档,可以使用 -u(更新)选项。例如,要用 /home/user/documents 目录中的新文件更新 backup.tar 存档,可以使用以下命令:
tar -uf backup.tar /home/user/documents
此命令会将 /home/user/documents 目录的内容添加到现有的 backup.tar 存档中,而不会修改存档中的其他文件。
要将新文件追加到现有的 tar 存档,可以使用 -r(追加)选项。例如,要将 /etc 目录的内容追加到 backup.tar 存档,可以使用以下命令:
tar -rf backup.tar /etc
此命令会将 /etc 目录的内容添加到现有 backup.tar 存档的末尾。
请记住,无法更新或追加到压缩的 tar 存档(例如 backup.tar.gz)。在这种情况下,你需要提取内容,执行更新或追加操作,然后重新压缩存档。
总结
tar 实用程序是 Linux 中用于各种文件管理任务的多功能工具,包括备份、软件分发、存档和部署。通过了解 tar 的基本概念和常见使用场景,你可以有效地利用此工具简化文件管理工作流程,并确保重要数据的可靠存储和传输。



