我正在尝试使用follwing命令创建一个tar:
tar -cvf myFile.tar -X exclude-files.txt myContentDirectory
我的排除文件中包含以下排除模式:
**/*.bak
**/*.db
**/*.html
但是我没有看到这些文件类型在我的tar中被排除在外。 我在这做错了什么?
我发现当我在exclude-files.txt中只有一个模式时,我只说
**/*.bak
确实有效。但不是多种文件模式(每个新线路)
答案 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
将吐出存档中剩余的所有文件的列表。