如何为此tar命令构建Ant TarTask?

时间:2009-09-05 17:00:25

标签: ant tar

tar zcvf Test.tar.gz / var / trac / test / var / svn / test

到目前为止,我有:

<target name="archive" depends="init">
    <tar compression="gzip" destfile="test.tar.gz">
        <tarfileset dir="/">
            <include name="/var/trac/test" />
        </tarfileset>
        <tarfileset dir="/">
            <include name="/var/trac/svn" />
        </tarfileset>
    </tar>
</target>

通过调试,它始终显示“找不到任何来源”,所以我对下一步该做什么感到有点困惑。

1 个答案:

答案 0 :(得分:5)

这里有几件事可能出错:

  1. /var/trac/test/var/svn/test个文件或目录吗?真实tar对两者都可以正常工作;你的任务 - 现在的编写方式 - 只适用于文件而不适用于文件夹。

  2. 您(或者更确切地说,Ant进程)是否具有足够的权限?

  3. <include>元素包含patterns,它们通常与基础目录相对。你将它们指定为绝对值。

  4. 我会将上述内容重写为:

    <target name="archive" depends="init">
      <tar compression="gzip" destfile="test.tar.gz">
        <tarfileset dir="/var/trac" prefix="/var/trac">
          <include name="test/**" /> 
          <include name="svn/**" />
        </tarfileset>
      </tar>
    </target>
    

    prefix允许explicitly specify the path与Tar档案中的哪些文件开始。

    /**中的

    <include>告诉Ant从该文件夹及其所有子文件夹中获取所有文件。如果/var/trac/test/var/svn/test确实是文件而不是文件夹,那么您可以省略它。