一、概述
scp是Ant1.6引入的内置任务,用于复制文件或文件集到运行ssh守护进程的远程计算机上,或者从远程计算机上复制文件到本地。此任务需要外部包jsch.jar版本为0.1.42+。
二、属性
file:要拷贝的文件,可以是本地路径或者user[:password]@host:/directory/path格式的远程路径。如果使用基于密钥的身份验证或者指定password属性,则:password可以省略。远程路径是通过是否包含@符号来识别的,如果本地路径包含@字符则此任务无法正常运行。
localfile:ant1.6.2起,file属性的替代方法,总是指向本地文件,添加此属性的原因是,当赋值file属性时,如果包含@字符就会视为远程路径。但是@也可以出现在本地路径中。也就是说当本地路径中包含@字符时,可以使用此属性来避免将本地路径识别为远程路径。
remotefile:ant1.6.2起,file属性的替代方法,总是指向远程文件。
todir:拷贝到的目录,可以是本地路径或者user[:password]@host:/directory/path格式的远程路径。如果使用基于密钥的身份验证或者指定password属性,则:password可以省略。远程路径是通过是否包含@符号来识别的,如果本地路径包含@字符则此任务无法正常运行。
localtodir:ant1.6.2起,todir属性的替代方法,总是指向本地目录,添加此属性的原因是,当赋值todir属性时,如果包含@字符就会视为远程目录。但是@也可以出现在本地目录路径中。也就是说当本地目录路径中包含@字符时,可以使用此属性来避免将本地目录路径识别为远程目录路径。
localtofile:ant1.6.2起,todir属性的替代方法,在接收文件时将文件名更改为指定的名称,只有在接收单个文件时有效。
remotetodir:ant1.6.2起,todir属性的替代方法,总是指向远程目录。
remotetofile:ant1.6.2起,todir属性的替代方法,发送文件时将文件名称更改为指定的名称,只有在发送单个文件时有效。
post:连接到远程主机的端口,默认为22。
trust:如果设置为true/yes,则信任所有未知主机。如果设置为false,则连接的主机必须在knownhosts中列出,默认为false。
knownhosts:设置用于验证远程主机标识的已知主机文件,文件必须是ssh2格式的。默认为${user.home}/.ssh/known_hosts。
failonerror:如果命令未成功完成,是否停止构建,默认为true。
password:密码,如果使用的是基于密钥的身份验证,或者在file或todir属性中设置了密码,则不需此属性。
keyfile:保存私钥的文件的位置,如果使用基于密钥的认证,则必须设置此属性。
passphrase:私钥的密码。默认为空字符串。
verbose:ant1.6.2起,是否输出详细的信息给用户,默认为false。
sftp:ant1.7起,scp是否使用sftp协议,sftp 协议是 SSH2 的文件传输协议。如果与不支持scp1的服务器进行文件拷贝建议将此属性设置为true。
preserveLastModified:ant1.8起,是否保留下载的文件的最后修改时间的时间戳,只有从远程传输到本地系统时有效并且可能无法与不支持ssh2的服务器工作,默认为false。
scp支持嵌套fileset元素来选择要拷贝的文件,使用fileset元素,必须设置todir属性。
三、简单示例
<project>
<!--<scp trust="true" file="build.xml" todir="root:root@192.168.0.112:/root/test.xml"/> -->
<scp trust="true" todir="result" file="root:root@192.168.0.112:/root/*"/>
</project>