如何使用Ant同步两个文件夹?

Geo*_*Geo 0 ant copy

假设我从网络驱动器复制一些带有ant的文件:

<copy todir="." verbose="true">
   <fileset dir="some_directory" includes="**/*"/>
</copy>
Run Code Online (Sandbox Code Playgroud)

假设我先测试文件夹是否存在.

<available file="${dir.local}" property="dir.exists"/>
Run Code Online (Sandbox Code Playgroud)

如果我的计算机上有该文件夹,我只想复制修改过的文件.有没有办法保持up2date与服务器上存在的版本?

编辑:我知道同步任务.问题是,如果我的本地文件被修改,同步不会复制它们.有没有办法解决这种行为,还是有另外一项任务可以做到这一点?

EDIT2:这是根据彼得的建议修改的代码:

<target name="copy">
  <echo>${dir.remote}</echo>
  <copy todir="${dir.local}" verbose="true" overwrite="true" 
  preservelastmodified="true">
     <fileset dir="${dir.remote}">
        <include name="**/*"/>
     </fileset>
  </copy>
</target>
Run Code Online (Sandbox Code Playgroud)

然而,这会复制所有文件.它不仅取代了修改后的.

小智 7

从Apache Ant 1.6开始,您可以使用同步任务来同步文件夹.例:

    <sync todir="site">
      <fileset dir="genereted-site" />
    </sync>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请访问http://ant.apache.org/manual/Tasks/sync.html.