Since you haven't specified I'll assume that your local and remote systems are unix based and therefore support rsync and ssh.
A more cross-platform solution is challenging...
Example
Configure SSH
Generate an SSH key (specify an empty passphrase):
ssh-keygen -f rsync
This will generate 2 files, corresponding to the private and public keys:
|-- rsync
`-- rsync.pub
Install the public key on the remote server
ssh-copy-id -i rsync.pub user@remote
Test that you can now perform a password-less login, using the ssh private key to authenticate:
ssh -i rsync user@remote
ANT
The "download" target invokes rsync to copy the remote file system tree locally. If required one can additionally specify rsync exclusions (see the 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>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…