tar排除文件模式

use*_*339 8 file tar

我正在尝试使用follwing命令创建一个tar:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory
Run Code Online (Sandbox Code Playgroud)

我的排除文件有以下要排除的模式:

**/*.bak
**/*.db
**/*.html
Run Code Online (Sandbox Code Playgroud)

但我没有看到这些文件类型被我的焦油排除在外.我在这做错了什么?

我发现当我在exclude-files.txt中只有一个模式时,我们只说

**/*.bak
Run Code Online (Sandbox Code Playgroud)

它确实有效.但没有多种文件模式(每个新线路)

Mik*_* K. 6

我认为这:

*.bak
*.db
*.html
Run Code Online (Sandbox Code Playgroud)

如果要排除可以执行的特定目录,则排除文件的格式是正确的:

some-dir/*.db
Run Code Online (Sandbox Code Playgroud)

你的命令也应如下所示:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 
Run Code Online (Sandbox Code Playgroud)


Oko*_*000 5

对不起,如果这个答案有点晚了。

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' > myFile.tar
Run Code Online (Sandbox Code Playgroud)

看,您在这里所做的是创建 tar,但是将其发送到 stdout 而不是文件,然后将其通过管道传输到 tar 以删除您不想要的内容,一次或多次,最后将输出写入文件.

你甚至可以像这样先测试它:

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv
Run Code Online (Sandbox Code Playgroud)

这将吐出存档中剩余的所有文件的列表。

  • `--exclude` 模式应始终使用单引号,例如 `--exclude='*.bak'`。请参阅:https://www.gnu.org/software/tar/manual/html_node/problems-with-exclude.html (2认同)