蚊章汇 - Matt Zand,kevin Downs
type: channel
link: https://linuxcn.bwsl.wang/author/1512/
description: Matt Zand,kevin Downs
items: 如何在 Linux 中创建和管理归档文件

如何在 Linux 中创建和管理归档文件
type: item
date: 2021-02-17T20:10:16+08:00
description: 简而言之，归档是一个包含一系列文件和（或）目录的单一文件。归档文件通常用于在本地或互联网上传输，或作为一个一系列文件和目录的备份副本，从而允许你使用一个文件来工作（如果压缩，则其大小会小于所有文件的总和）。同样的，归档也用于软件应用程序打包。为了方便传输，可以很容易地压缩这个单一文件，而存档中的文件会保留原始结构和权限。我们可以使用 tar 工具来创建、列出和提取归档中的文件。用 tar 生成的归档通常称为“tar 文件”、“tar 归档”或者“压缩包”（因为所有已归档的文件被合成了一个文件）。本教程会展示如何使用 tar 创建、列出和提取归档中的内容。这三个操作都会使用两个公共选项 -f 和 -v：使用 -f 指定归档文件的名称，使用 -v（“冗余”）选项使 tar 在处理文件时输出文件名。虽然 -v 选项不是必需的，但是它可以让你观察 tar 操作的过程。在本教程的下面部分中，会涵盖 3 个主题：1、创建一个归档文件；2、列出归档文件内容；3、提取归档文件内容。另外我们会回答归档文件管理的 6 个实际问题来结束本教程。你从本教程学到的内容对于执行与网络安全和云技术相关的任务至关重要。1、创建一个归档文件要使用 tar 创建一个归档文件，使用 -c（“创建”）选项，然后用 -f 选项指定要创建的归档文件名。通常的做法是使用带有 .tar 扩展名的名称，例如 my-backup.tar。注意，除非另有特别说明，否则本文其余部分中使用的所有命令和参数都以小写形式使用。记住，在你的终端上输入本文的命令时，无需输入每个命令行开头的 $ 提示符。输入要归档的文件名作为参数；如果要创建一个包含所有文件及其子目录的归档文件，提供目录名称作为参数。要归档 project 目录内容，输入：$ tar -cvf project.tar project 这个命令将创建一个名为 project.tar 的归档文件，包含 project 目录的所有内容，而原目录 project 将保持不变。使用 -z 选项可以对归档文件进行压缩，这样产生的输出与创建未压缩的存档然后用 gzip 压缩是一样的，但它省去了额外的步骤。要从 project 目录创建一个 project.tar.gz 的压缩包，输入：$ tar -zcvf project.tar.gz project 这个命令将创建一个 project.tar.gz 的压缩包，包含 project 目录的所有内容，而原目录 project 将保持不变。注意： 在使用 -z 选项时，你应该使用 .tar.gz 扩展名而不是 .tar 扩展名，这样表示已压缩。虽然不是必须的，但这是一个很好的实践。gzip 不是唯一的压缩形式，还有 bzip2 和 xz。当我们看到扩展名为 .xz 的文件时，我们知道该文件是使用 xz 压缩的，扩展名为 .bz2 的文件是用 bzip2 压缩的。随着 bzip2 不再维护，我们将远离它而关注 xz。使用 xz 压缩时，需要花费更长的时间。然而，等待通常是值得的，因为压缩效果要好的多，这意味着压缩包通常比使用其它压缩形式要小。更好的是，不同压缩形式之间的解压缩或提取文件并没有太大区别。下面我们将看到一个使用 tar 压缩文件时如何使用 xz 的示例：$ tar -Jcvf project.tar.xz project 我们只需将 gzip 的 -z 选项转换为 xz 的大写 -J 即可。以下是一些输出，显示压缩形式之间的差异：如你所见，xz 的压缩时间最长。但是，它在减小文件大小方面做的最好，所以值得等待。文件越大，压缩效果也越好。2、列出归档文件的内容要列出 tar 归档文件的内容但不提取，使用 -t 选项。要列出 project.tar 的内容，输入：$ tar -tvf project.tar 这个命令列出了 project.tar 归档的内容。-v 和 -t 选项一起使用会输出每个文件的权限和修改时间，以及文件名。这与 ls 命令使用 -l 选项时使用的格式相同。要列出 project.tar.gz 压缩包的内容，输入：$ tar -tzvf project.tar.gz 3、从归档中提取内容要提取（解压）tar 归档文件中的内容，使用 -x（“提取”）选项。要提取 project.tar 归档的内容，输入：$ tar -xvf project.tar 这个命令会将 project.tar 归档的内容提取到当前目录。如果一个归档文件被压缩，通常来说它的扩展名为 .tar.gz 或 .tgz，请包括 "-z" 选项。要提取 project.tar.gz 压缩包的内容，输入：$ tar -zxvf project.tar.gz 注意： 如果当前目录中有文件或子目录与归档文件中…