据我所知,当通过 scp 任务从远程计算机下载文件时,ant 不提供“文件集”属性。从本地计算机发送文件时它可以工作,但在远程计算机中启动时它不起作用。这是来自文档。因此,在远程计算机中,我在每个目录中都有一些文件夹和文件负载。我想下载所有文件夹以及每个文件夹中的一个指定文件。下载所有文件然后删除不需要的文件并不是解决方案,因为有数千个文件。
所以。如何使用ant从远程计算机的指定目录下载所有文件夹(仅在磁盘上创建没有内容的文件夹),然后从远程计算机的每个目录下载一个指定的文件并将其放入相应的文件夹?
由于您没有指定,我将假设您的本地和远程系统是基于 UNIX 的,因此支持rsync http://en.wikipedia.org/wiki/Rsync和 ssh。
更跨平台的解决方案具有挑战性......
Example
配置SSH
生成 SSH 密钥(指定空密码):
ssh-keygen -f rsync
这将生成 2 个文件,分别对应私钥和公钥:
|-- rsync
`-- rsync.pub
在远程服务器上安装公钥
ssh-copy-id -i rsync.pub user@remote
测试您现在是否可以使用 ssh 私钥进行身份验证来执行无密码登录:
ssh -i rsync user@remote
ANT
“下载”目标调用 rsync 将远程文件系统树复制到本地。如果需要,可以另外指定 rsync 排除项(请参阅 rsync doco)。
<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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)