File tar排除文件模式

File tar排除文件模式,file,tar,File,Tar,我正在尝试使用以下命令创建tar: tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 我的排除文件有以下要排除的模式: **/*.bak **/*.db **/*.html 但是我没有看到这些文件类型被排除在我的tar之外。 我做错了什么 我发现,当我在exclude-files.txt中只有一个模式时,我们可以说只有一个模式 **/*.bak 它确实有效。但是不能使用多个文件模式(每一个都在新行上)我认为: *.bak

我正在尝试使用以下命令创建tar:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory
我的排除文件有以下要排除的模式:

**/*.bak
**/*.db
**/*.html
但是我没有看到这些文件类型被排除在我的tar之外。 我做错了什么

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

**/*.bak
它确实有效。但是不能使用多个文件模式(每一个都在新行上)

我认为:

*.bak
*.db
*.html
是排除文件的正确格式如果要排除特定目录,可以执行以下操作:

some-dir/*.db
此外,您的命令应如下所示:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 
tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv

命令的顺序很可能不正确

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

应该是

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

另外,我还没有检查过过滤器本身。最有可能的参数顺序就是问题所在。
如果过滤器/模式中存在问题-使用--exclude选项逐个测试会更容易。

如果回答有点晚,很抱歉

tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' > myFile.tar
看,您在这里所做的是创建tar,但将其发送到stdout而不是文件,然后将其传输到tar中删除您不想要的内容,一次或多次,最后将输出写入文件

您甚至可以先这样测试它:

tar -cvf myFile.tar -X exclude-files.txt myContentDirectory 
tar -cO --exclude=*.bak myContentDirectory | tar -O --delete '*.db' | tar -O --delete '*.html' | tar -tv

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

我也尝试过,但效果很好,运行命令时输出的结果是什么?刚刚编辑了我上面的问题,请查看。该命令确实运行,但排除选项仅在我的文件中只提到一种模式时才起作用。您使用的是哪种版本的tar(以及哪种操作系统)?我使用OSX版本(tar 2.8.3)测试了它,它运行良好…
--exclude
模式应始终使用单引号,例如
--exclude='*.bak'
。请参阅:@thom_nic这是最佳实践,但在上述情况下,从技术上讲这不是必需的:
--exclude=*.bak
。此表单需要:
--排除'*.bak'
。关键是要避免外壳膨胀。