简介
Linux 中的 tar
命令是一个强大的实用工具,用于归档文件和目录。该工具允许用户将多个文件和目录打包成一个单一的归档文件,从而使数据存储、传输和备份更加高效。在这个实验中,你将学习如何使用 tar
命令创建归档文件、查看其内容以及从中提取文件。这些技能对于系统管理员、开发人员以及任何需要高效管理数据的 Linux 用户来说都是必不可少的。
Linux 中的 tar
命令是一个强大的实用工具,用于归档文件和目录。该工具允许用户将多个文件和目录打包成一个单一的归档文件,从而使数据存储、传输和备份更加高效。在这个实验中,你将学习如何使用 tar
命令创建归档文件、查看其内容以及从中提取文件。这些技能对于系统管理员、开发人员以及任何需要高效管理数据的 Linux 用户来说都是必不可少的。
在创建归档文件之前,你需要准备一些文件和目录。在这一步中,你将创建一个包含各种文件的目录结构,后续会对这些文件进行归档。
首先,让我们切换到默认的工作目录:
cd ~/project
现在,让我们创建一个名为 document_library
的目录,并在其中创建三个子目录:reports
、specifications
和 references
:
mkdir -p ~/project/document_library/{reports,specifications,references}
mkdir
命令用于创建目录,-p
选项允许我们在父目录不存在时创建它们。花括号 {}
用于一次性创建多个子目录。
接下来,让我们在每个子目录中创建一些示例文件:
touch ~/project/document_library/reports/{quarterly,annual,monthly}.txt
touch ~/project/document_library/specifications/{product,service,system}.txt
touch ~/project/document_library/references/{guide,manual,handbook}.txt
touch
命令用于创建空文件。在这个例子中,我们在每个子目录中创建了三个文本文件。
让我们使用带有 -R
选项的 ls
命令递归地列出目录内容,以验证我们的目录结构是否正确创建:
ls -R ~/project/document_library
你应该会看到类似于以下的输出:
/home/labex/project/document_library:
references reports specifications
/home/labex/project/document_library/references:
guide.txt handbook.txt manual.txt
/home/labex/project/document_library/reports:
annual.txt monthly.txt quarterly.txt
/home/labex/project/document_library/specifications:
product.txt service.txt system.txt
这表明我们已经成功创建了包含示例文件的目录结构。在下一步中,我们将学习如何使用 tar
命令对这些文件进行归档。
现在我们已经设置好了目录结构,接下来让我们使用 tar
命令为整个 document_library
目录创建一个归档文件。tar
命令功能多样,有许多选项,不过目前我们将重点关注最常用的那些。
使用 tar
创建归档文件的基本语法如下:
tar [选项] [归档文件名] [要归档的文件或目录]
常用选项包括:
-c
:创建一个新的归档文件-z
:使用 gzip 压缩归档文件-v
:详细模式(显示进度)-f
:指定归档文件的文件名-C
:在执行操作前切换到指定目录让我们为 document_library
目录创建一个压缩归档文件:
tar -czvf ~/project/documents_archive.tar.gz -C ~/project document_library
在这个命令中:
-c
告诉 tar 创建一个新的归档文件-z
告诉 tar 使用 gzip 压缩归档文件-v
启用详细模式,显示正在处理的文件-f ~/project/documents_archive.tar.gz
指定归档文件的名称-C ~/project
告诉 tar 在归档前切换到 ~/project
目录document_library
是我们要归档的目录你应该会看到列出所有正在添加到归档文件中的文件的输出。这表明归档文件正在成功创建。
为了验证归档文件是否已创建,让我们检查其是否存在以及它的大小:
ls -lh ~/project/documents_archive.tar.gz
输出应该类似于:
-rw-r--r-- 1 labex labex 237 Sep 22 10:00 /home/labex/project/documents_archive.tar.gz
ls
命令的 -lh
选项会显示详细信息,包括以人类可读格式表示的文件大小。实际的文件大小可能会有所不同,但由于我们的示例文件都是空的,所以应该相对较小。
恭喜你!你已经成功为你的目录结构创建了一个压缩归档文件。在下一步中,我们将探讨如何在不提取归档文件的情况下查看其内容。
在提取归档文件之前,查看其内容通常很有用,这样可以确保它包含预期的文件,或者定位特定的文件。tar
命令提供了在不提取归档文件的情况下列出其内容的选项。
要列出我们创建的归档文件的内容,请使用以下命令:
tar -tvf ~/project/documents_archive.tar.gz
在这个命令中:
-t
告诉 tar 列出归档文件的内容-v
启用详细模式,显示详细信息-f ~/project/documents_archive.tar.gz
指定要检查的归档文件你应该会看到类似于以下的输出:
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/references/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/guide.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/handbook.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/references/manual.txt
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/reports/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/annual.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/monthly.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/quarterly.txt
drwxr-xr-x labex/labex 0 2023-09-22 10:00 document_library/specifications/
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/product.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/service.txt
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/specifications/system.txt
此输出显示了归档文件中每个文件和目录的权限、所有者、大小、修改日期和路径。
如果你想在归档文件中搜索特定的文件,可以将输出通过管道传递给 grep
。例如,要查找名称中包含 "annual" 的所有文件:
tar -tvf ~/project/documents_archive.tar.gz | grep annual
这应该会显示:
-rw-r--r-- labex/labex 0 2023-09-22 10:00 document_library/reports/annual.txt
在提取归档文件之前查看其内容很有用,特别是在处理大型归档文件或你只对特定文件感兴趣时。在下一步中,我们将学习如何从归档文件中提取文件。
既然我们已经知道如何创建归档文件并查看其内容,接下来让我们学习如何从归档文件中提取文件。当你需要从备份中恢复文件,或者收到他人提供的归档文件时,这一操作非常有用。
为了演示这一过程,我们首先模拟一个原始目录结构丢失的场景。我们将删除 document_library
目录:
rm -rf ~/project/document_library
rm
命令用于删除文件和目录,-rf
选项表示递归操作并强制删除,无需确认提示。在实际场景中使用此命令时要格外小心,因为它会永久删除文件。
让我们验证该目录是否已被删除:
ls -la ~/project
你应该不会在列表中看到 document_library
,但仍能看到 documents_archive.tar.gz
文件。
现在,让我们提取归档文件以恢复我们的文件。使用 tar
进行提取的基本语法如下:
tar [选项] [归档文件名]
常见的提取选项包括:
-x
:从归档文件中提取文件-z
:使用 gzip 进行解压缩-v
:详细模式(显示进度)-f
:指定归档文件的文件名-C
:在提取前切换到指定目录让我们提取我们的归档文件:
tar -xzvf ~/project/documents_archive.tar.gz -C ~/project
在这个命令中:
-x
告诉 tar 提取文件-z
告诉 tar 对 gzip 压缩的归档文件进行解压缩-v
启用详细模式,显示正在提取的文件-f ~/project/documents_archive.tar.gz
指定归档文件-C ~/project
告诉 tar 将文件提取到 ~/project
目录你应该会看到列出所有正在提取的文件的输出,类似于创建归档文件时看到的输出。
让我们验证我们的目录结构是否已恢复:
ls -R ~/project/document_library
你应该会看到与我们最初创建的相同的目录结构和文件:
/home/labex/project/document_library:
references reports specifications
/home/labex/project/document_library/references:
guide.txt handbook.txt manual.txt
/home/labex/project/document_library/reports:
annual.txt monthly.txt quarterly.txt
/home/labex/project/document_library/specifications:
product.txt service.txt system.txt
如果你只想从归档文件中提取特定的文件,可以在归档文件名后面指定它们的路径。例如,仅提取 reports
目录:
mkdir -p ~/project/extracted_reports
tar -xzvf ~/project/documents_archive.tar.gz -C ~/project/extracted_reports document_library/reports
这将仅把 reports
目录及其内容提取到 extracted_reports
目录中。
恭喜你!你已经成功学会了如何使用 tar
命令从归档文件中提取文件。这项技能对于恢复备份、从源代码安装软件以及许多其他 Linux 操作至关重要。
在本次实验中,你学习了如何在 Linux 系统中使用 tar
命令来管理文件归档。你练习了以下几项重要技能:
tar
命令结合 -czvf
选项创建压缩归档文件-tvf
选项查看归档文件的内容,而无需提取文件-xzvf
选项从归档文件中提取文件以恢复数据这些技能是许多 Linux 操作的基础,包括备份和恢复过程、软件安装以及文件管理。tar
命令是 Linux 环境中的强大工具,掌握其有效使用方法将有助于你高效地管理数据。
请记住 tar
命令的关键选项:
-c
:创建新的归档文件-x
:从归档文件中提取文件-t
:列出归档文件的内容-z
:使用 gzip 压缩-v
:详细模式(显示进度)-f
:指定归档文件的文件名-C
:在执行操作前切换到指定目录现在,你可以自信地在 Linux 环境中使用 tar
命令来创建备份、共享文件和恢复数据了。