让ANT仅scp新的/更改的文件

时间:2010-03-29 13:27:26

标签: ant scp

我想优化我的scp部署,该部署当前将所有文件复制到仅复制自上次构建以来已更改的文件。我认为应该可以通过当前设置以某种方式,但我不知道如何做到这一点。

我有以下内容:

Project / src / blah / blah /< ----我正在编辑的文件(在这种情况下主要是PHP,一些静态资源)

Project / build< -------我有一个本地构建步骤,用于将文件复制到此处

我现在有一个scp任务,在需要时将所有Project / build复制到远程服务器。

是否有可能以某种方式利用这个额外的“构建”目录来实现我想要的东西 - 这意味着我只想在src / **和build / **之间上传“diff”。是否有可能以某种方式将其作为ANT中的文件集进行检索,然后scp呢?

我确实意识到这意味着如果我以某种方式删除/弄乱服务器上的文件,ANT脚本就不会注意到,但对我来说这没关系。

2 个答案:

答案 0 :(得分:15)

您可以告诉ant scp仅复制自上次推送以来使用modified标记修改过的文件,如下所示:

<scp trust="true" sftp="true"... >
  <fileset dir="${local.dir}">
    <modified>
      <param name="cache.cachefile" value="localdev.cache"/>
    </modified>
  </fileset>
</scp>

第一次使用它时,它将发送所有文件并将时间戳缓存在param中声明的缓存文件中。之后,它只会发送修改过的。

在sftp模式下测试并验证。

答案 1 :(得分:0)

我认为您需要使用rsync代替。我找到了以下article来回答您的问题。

简而言之,rsync将从它停止的地方恢复,并且应该可以通过ssh进行隧道传输。