ant,从远程机器下载文件集

正如我重新安装ant通过scp任务从远程计算机下载文件时不提供“文件集”属性。 它在从本地机器发送文件时起作用,但在远程机器启动时不起作用。 这是来自文档。 所以在远程机器上,我有一些文件夹和每个目录中的文件加载。 我想要下载所有的文件夹和一个指定的文件。 下载所有文件,然后删除不需要的文件将不会是解决scheme,因为有成千上万的文件。

所以。 如何从远程机器的指定目录中下载所有文件夹(只能在没有内容的磁盘上创build),然后从远程机器的每个目录下载一个指定的文件,并使用ant?

既然你没有指定我会假设你的本地和远程系统是基于Unix的,因此支持rsync和ssh。

更跨平台的解决scheme是具有挑战性的…

configurationSSH

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

ssh-keygen -f rsync 

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

 |-- rsync `-- rsync.pub 

在远程服务器上安装公钥

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

testing您现在可以执行无密码login,使用ssh私钥进行身份validation:

 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>