创建 tar 文件时排除文件和目录

tar 命令用于从各种文件和文件夹创建存档文件。

当您在一个地方拥有所有必需的文件时,这非常简单。 但是如果你想把一些文件或文件夹放在 tar 文件中并排除一些呢?

一种方法是将这些所需文件复制到新目录中,然后继续执行标准过程,但这不是一种有效的方法。

相反,您可以告诉 tar 命令以这种方式排除不需要的文件:

tar --exclude="File_to_exclude" [options] [archive_name] [path]

顺便说一句,这不是唯一的方法。 让我在这里向您展示几种方法。

但在我跳到指南之前,我想向您展示包含多个文件和子目录的目录,我将在本指南中使用它们:

现在,让我们继续第一种方法。

方法 1. 使用 -exclude 选项

要使用 -exclude 选项,您需要遵循给定的命令语法:

tar --exclude="File_to_exclude" [options] [archive_name] [path]

为了 example,我将创建一个名为 IHateC 不包括 HelloWorld.c 文件:

tar --exclude="HelloWorld.c" -zcvf IHateC.tar.gz .

首先,让我在这里分解使用的选项:

  • z 使用 gzip 实用程序压缩存档中的文件。
  • c 负责创建一个新的归档文件。
  • f 允许用户指定新存档的名称。
  • v (详细)为我们提供已处理文件和目录的列表以创建存档文件。

. 在命令末尾使用表示我想使用当前工作目录。

要检查 tar 文件的内容,可以使用 tar 命令和 -tf 选项:

tar -tf IHateC.tar.gz
列出linux中tar文件的内容

但是排除多个文件和目录呢? 干得好。

排除多个文件和目录

要排除多个文件和目录,可以使用链 --exclude.

为了 example我会排除 Bash.sh 和名为的子目录 Sub-Directory-1

tar --exclude="Bash.sh" --exclude="Sub-Directory-1" -zcvf NoDir.tar.gz .
在linux中创建tar文件时排除多个文件和目录

但是如果您要排除各种文件,此命令可能会变得太长。 如果它们具有相同的扩展名,事情就会变得容易得多!

使用文件扩展名排除文件

您只需要将文件扩展名与 --exclude 它会完成你的工作。

为了 example,我想排除每一个 .mp3 在创建 tarball 文件时,我必须遵循给定的命令:

tar --exclude="*.mp3" -zcvf NoMp3.tar.gz .

方法 2. 使用文本文件排除文件和目录

在此方法中,我将创建一个文本文件,其中包含要排除的文件和目录的名称。

所以我制作了一个包含 3 个我想排除的文件名的文本文件 exclude.txt

在linux中使用cat命令列出文件内容

所以现在我只需要使用该文本文件来排除文件:

tar -zcvf NewFile.tar.gz --exclude-from="exclude.txt" .
在linux中创建tar文件时使用文本文件排除多个文件和目录

就是这样!

最后的话

这是我对如何在以最简单的方式创建 tar 文件的同时排除文件和目录的看法。

如果您有任何疑问,欢迎您在评论中提取它们!