0

正如我读过的那样,当通过 scp 任务从远程机器下载文件时,ant 不提供 'fileset' 属性。从本地机器发送文件时它可以工作,但在远程机器上启动时它不起作用。那是来自文档。因此,在远程机器中,我在每个目录中都有一些文件夹和文件加载。我想从每个文件夹中下载所有文件夹和一个指定文件。下载所有文件然后删除不需要的文件将不是解决方案,因为有数千个文件。

所以。如何从远程机器的指定目录下载所有文件夹(仅在磁盘上创建没有内容的文件夹),然后从远程机器的每个目录下载一个指定的文件并使用ant将其放到相应的文件夹中?

4

1 回答 1

1

由于您没有指定,我假设您的本地和远程系统是基于 unix 的,因此支持rsync和 ssh。

一个更跨平台的解决方案具有挑战性……

例子

配置 SSH

生成 SSH 密钥(指定一个空密码):

ssh-keygen -f rsync

这将生成 2 个文件,对应于私钥和公钥:

|-- rsync
`-- rsync.pub

在远程服务器上安装公钥

ssh-copy-id -i rsync.pub user@remote

测试您现在可以执行无密码登录,使用 ssh 私钥进行身份验证:

ssh -i rsync user@remote

蚂蚁

“下载”目标调用 rsync 在本地复制远程文件系统树。如果需要,可以另外指定 rsync 排除项(请参阅 rsync 文档)。

<project name="rsync" default="download">

    <target name="download">
        <exec executable="rsync">
            <arg line="-avz -e 'ssh -i rsync' user@remote:/path/to/data/ data"/>
        </exec>
    </target>

    <target name="clean">
        <delete dir="data"/>
    </target>

</project>
于 2012-08-30T22:26:35.110 回答