<delete file="output/program.tar.bz2"/>
<tar basedir="input" destfile="output/program.tar.bz2" compression="bzip2">
<tarfileset dir="input">
<include name="goodfolder1/**"/>
<include name="goodfolder2/**"/>
<exclude name="**/badfile"/>
<exclude name="**/*.badext"/>
</tarfileset>
</tar>
我希望它创建一个输入/ goodfolder1和输入/ goodfolder2的.tar.bz2,不包括名为“badfile”的文件,并排除扩展名为“.badext”的文件。它给了我一个.tar.bz2,但它包括badfile和* .badext - 排除似乎被忽略了。
包含/排除的顺序似乎没有什么区别。我尝试将包含/排除包装在一个(文档中说它是隐含的?),但它没有区别。
我确信我有一些简单的东西,因为the manual has a very similar example,{{3}},虽然情况有所不同。
编辑:看起来它可能与dir="input"
属性有关:它在“输入”中添加所有内容,然后将tarfileset中的所有内容添加到该内容中。我想要的文件在program.tar.bz2中出现两次,但排除的文件只出现一次。但dir
是强制性的,我不知道这与手册中的示例有何不同。
答案 0 :(得分:2)
啊,<tarfileset>
本身就是造成我问题的原因。
如果我将其删除,并将包含/排除直接放在<tar>
中,则可以正常使用。
答案 1 :(得分:0)
我认为您需要使用两个<tarfileset>
元素。 <include>
和<exclude>
元素仅用于文件。不适用于目录。例如:
<tar basedir="input" destfile="output/program.tar.bz2" compression="bzip2">
<tarfileset dir="goodfolder1">
<exclude name="**/badfile"/>
<exclude name="**/*.badext"/>
</tarfileset>
<tarfileset dir="goodfolder2">
<exclude name="**/badfile"/>
<exclude name="**/*.badext"/>
</tarfileset>
</tar>