2011-09-21 80 views
4

我试图创建follwing命令tar文件模式:焦油排除

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

和我排除文件已follwing模式排除:

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

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

我发现,当我在排除-files.txt只有一个模式,可以说只有

**/*.bak 

它的工作。但不能与多个文件模式(每个ON换行)

+0

你刚试过'* .bak'吗? –

+0

是的,我有。没有运气 – user620339

+0

你使用什么版本的tar(和什么操作系统)?我测试了这个使用OSX版本(焦油2.8.3),它工作正常... –

回答

4

我想这:

*.bak 
*.db 
*.html 

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

some-dir/*.db 

而且您的命令应该是这样的:

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

我试过上述命令,仍然无法正常工作。 – user620339

+0

我也试过这个,但是它工作正常,当你运行这个命令时你会得到什么输出结果? –

+0

刚刚编辑我的问题上面,请看看。该命令确实运行,但排除选项只适用于我的文件中只提到了一个模式。 – user620339

0

最有可能的C的顺序ommand不正确。

焦油-cvf myFile.tar -X排除-files.txt myContentDirectory

应该像

焦油CV -X排除-files.txt -f myFile.tar myContentDirectory

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

1

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

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

见,你在做什么在这里创造的焦油,但其发送到stdout,而不是到文件,然后通过管道到这一点焦油,删除你不想要的东东,一个或更多的时间和最后将输出写入文件。

你甚至可以先测试这样的:

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

这会吐出所有剩余的归档文件的列表。