5

我想优化我的 scp 部署,该部署当前将所有文件复制到仅复制自上次构建以来已更改的文件。我相信以某种方式使用当前设置应该是可能的,但我不知道该怎么做。

我有以下内容:

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

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

我现在有一个 scp 任务,当我需要它时,它会将所有项目/构建复制到远程服务器。

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

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

4

2 回答 2

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 模式下测试和验证。

于 2010-12-27T22:09:05.160 回答
0

我认为您需要改用rsync。我发现以下文章回答了您的问题。

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

于 2010-03-29T17:06:58.967 回答