使用 Tar 保存飞艇的神秘档案

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Linux 中的 tar 命令是一个强大的实用工具,用于归档文件和目录。该工具允许用户将多个文件和目录打包成一个单一的归档文件,从而使数据存储、传输和备份更加高效。在这个实验中,你将学习如何使用 tar 命令创建归档文件、查看其内容以及从中提取文件。这些技能对于系统管理员、开发人员以及任何需要高效管理数据的 Linux 用户来说都是必不可少的。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/CompressionandArchivingGroup(["Compression and Archiving"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/touch("File Creating/Updating") linux/BasicFileOperationsGroup -.-> linux/rm("File Removing") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/FileandDirectoryManagementGroup -.-> linux/mkdir("Directory Creating") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/CompressionandArchivingGroup -.-> linux/tar("Archiving") linux/CompressionandArchivingGroup -.-> linux/gzip("Gzip") subgraph Lab Skills linux/ls -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/touch -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/rm -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/cd -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/mkdir -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/grep -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/tar -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} linux/gzip -.-> lab-271397{{"使用 Tar 保存飞艇的神秘档案"}} end

创建用于归档的目录结构

在创建归档文件之前,你需要准备一些文件和目录。在这一步中,你将创建一个包含各种文件的目录结构,后续会对这些文件进行归档。

首先,让我们切换到默认的工作目录:

cd ~/project

现在,让我们创建一个名为 document_library 的目录,并在其中创建三个子目录:reportsspecificationsreferences

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 创建归档文件

现在我们已经设置好了目录结构,接下来让我们使用 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 命令来管理文件归档。你练习了以下几项重要技能:

  1. 创建包含文件的目录结构,为归档做准备
  2. 使用 tar 命令结合 -czvf 选项创建压缩归档文件
  3. 使用 -tvf 选项查看归档文件的内容,而无需提取文件
  4. 使用 -xzvf 选项从归档文件中提取文件以恢复数据

这些技能是许多 Linux 操作的基础,包括备份和恢复过程、软件安装以及文件管理。tar 命令是 Linux 环境中的强大工具,掌握其有效使用方法将有助于你高效地管理数据。

请记住 tar 命令的关键选项:

  • -c:创建新的归档文件
  • -x:从归档文件中提取文件
  • -t:列出归档文件的内容
  • -z:使用 gzip 压缩
  • -v:详细模式(显示进度)
  • -f:指定归档文件的文件名
  • -C:在执行操作前切换到指定目录

现在,你可以自信地在 Linux 环境中使用 tar 命令来创建备份、共享文件和恢复数据了。