tar排除文件模式

时间:2011-09-21 16:59:33

标签: file tar

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

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory

我的排除文件中包含以下排除模式:

**/*.bak
**/*.db
**/*.html

但是我没有看到这些文件类型在我的tar中被排除在外。 我在这做错了什么?

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

**/*.bak

确实有效。但不是多种文件模式(每个新线路)

3 个答案:

答案 0 :(得分:6)

我想这个:

*.bak
*.db
*.html
如果要排除可以执行的特定目录,

是排除文件的正确格式:

some-dir/*.db

此外,您的命令应如下所示:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 

答案 1 :(得分:1)

很可能命令的顺序不正确。

  

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory

应该是

  

tar cv -X exclude-files.txt -f myFile.tar myContentDirectory

PS。我没有查看过滤器本身。最有可能的参数顺序是问题。     如果问题在过滤器/模式中 - 使用--exclude选项逐个测试则更容易。

答案 2 :(得分:1)

很抱歉,如果这个答案有点晚了。

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' > myFile.tar

看看,你在这里做的是创建tar,但是将它发送到stdout而不是文件然后将其传输到tar中以删除你不想要的东西,一次或多次最后将输出写入文件。

您甚至可以先测试它:

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv

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