<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<title>SCP Task</title>
</head>

<body>

<h2><a name="scp">SCP</a></h2>
<h3>Description</h3>

<p>Copies a file or FileSet to or from a remote machine running SSH daemon.
FileSet <i>only</i> works for copying files from the local machine to a
remote machine.</p>

<p><b>Note:</b> This task depends on external libraries not included
in the Ant distribution.  See <a
href="index.html#librarydependencies">Library Dependencies</a>
for more information.  This task has been tested with jsch-0.1.2 to
jsch-0.1.12.</p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
  <tr>
    <td valign="top"><b>Attribute</b></td>
    <td valign="top"><b>Description</b></td>
    <td align="center" valign="top"><b>Required</b></td>
  </tr>
  <tr>
    <td valign="top">file</td>
    <td valign="top">The file to copy.  This can be a local path or a
    remote path of the form <i>user[:password]@host:/directory/path</i>.
    <i>:password</i> can be ommitted if you use key based
    authentication or specify the password attribute.</td>
    <td valign="top" align="center">Yes, unless a nested
    <code>&lt;fileset&gt;</code> element is used.</td>
  </tr>
  <tr>
    <td valign="top">todir</td>
    <td valign="top">The directory to copy to.  This can be a local path
    or a remote path of the form <i>user[:password]@host:/directory/path</i>.
    <i>:password</i> can be ommitted if you use key based
    authentication or specify the password attribute.</td>
    <td valian="top" align="center">Yes</td>
  </tr>
  <tr>
    <td valign="top">port</td>
    <td valign="top">The port to connect to on the remote host.</td>
    <td valian="top" align="center">No, defaults to 22.</td>
  </tr>
  <tr>
    <td valign="top">trust</td>
    <td valign="top">This trusts all unknown hosts if set to yes/true.<br>
      <strong>Note</strong> If you set this to false (the default), the
      host you connect to must be listed in your knownhosts file, this
      also implies that the file exists.</td>
    <td valian="top" align="center">No, defaults to No.</td>
  </tr>
  <tr>
    <td valign="top">knownhosts</td>
    <td valign="top">This sets the known hosts file to use to validate
    the identity of the remote host.  This must be a SSH2 format file.
    SSH1 format is not supported.</td>
    <td valian="top" align="center">No, defaults to
    ${user.home}/.ssh/known_hosts.</td>
  </tr>
  <tr>
    <td valign="top">failonerror</td>
     <td valign="top">Whether to halt the build if the transfer fails.
     </td>
     <td valign="top" align="center">No; defaults to true.</td>
  </tr>
  <tr>
    <td valign="top">password</td>
     <td valign="top">The password.</td>
     <td valign="top" align="center">Not if you are using key based
     authentication or the password has been given in the file or
     todir attribute.</td>
  </tr>
  <tr>
    <td valign="top">keyfile</td>
     <td valign="top">Location of the file holding the private key.</td>
     <td valign="top" align="center">Yes, if you are using key based
     authentication.</td>
  </tr>
  <tr>
    <td valign="top">passphrase</td>
     <td valign="top">Passphrase for your private key.</td>
     <td valign="top" align="center">Yes, if you are using key based
     authentication.</td>
  </tr>
</table>
<h3>Parameters specified as nested elements</h3>

<h4>fileset</h4>
 <p><a href="../CoreTypes/fileset.html">FileSet</a>s are used to select
sets of files to copy.
 To use a fileset, the <code>todir</code> attribute must be set.</p>

<h3>Examples</h3>
<p><b>Copy a single local file to a remote machine</b></p>
<pre>
  &lt;scp file=&quot;myfile.txt&quot; todir=&quot;user:password@somehost:/home/chuck&quot;/&gt;
</pre>

<p><b>Copy a single local file to a remote machine with separate
password attribute</b></p>
<pre>
  &lt;scp file=&quot;myfile.txt&quot; todir=&quot;user@somehost:/home/chuck&quot; password=&quot;password&quot;/&gt;
</pre>

<p><b>Copy a single local file to a remote machine using key base
authentication.</b></p>
<pre>
  &lt;scp file=&quot;myfile.txt&quot;
       todir=&quot;user@somehost:/home/chuck&quot; 
       keyfile=&quot;${user.home}/.ssh/id_dsa&quot;
       passphrase=&quot;my extremely secret passphrase&quot;
  /&gt;
</pre>

<p><b>Copy a single remote file to a local directory</b></p>
<pre>
  &lt;scp file=&quot;user:password@somehost:/home/chuck/myfile.txt&quot; todir=&quot;../some/other/dir&quot;/&gt;
</pre>

<p><b>Copy a remote directory to a local directory</b></p>
<pre>
  &lt;scp file=&quot;user:password@somehost:/home/chuck/*&quot; todir=&quot;/home/sara&quot; /&gt;
</pre>

<p><b>Copy a local directory to a remote directory</b></p>
<pre>
  &lt;scp todir=&quot;user:password@somehost:/home/chuck/&quot;&gt;
    &lt;fileset dir=&quot;src_dir&quot;/&gt;
  &lt;/scp&gt;
</pre>
<p><b>Copy a set of files to a directory</b></p>
<pre>
  &lt;scp todir=&quot;user:password@somehost:/home/chuck&quot;&gt;
    &lt;fileset dir=&quot;src_dir&quot;&gt;
      &lt;include name=&quot;**/*.java&quot;/&gt;
    &lt;/fileset&gt;
  &lt;/scp&gt;

  &lt;scp todir=&quot;user:password@somehost:/home/chuck&quot;&gt;
    &lt;fileset dir=&quot;src_dir&quot; excludes=&quot;**/*.java&quot;/&gt;
  &lt;/scp&gt;
</pre>

<p><strong>Security Note:</strong>  Hard coding passwords and/or usernames
in scp task can be a serious security hole.  Consider using variable
substituion and include the password on the command line.  For example:<br>
<pre>
    &lt;scp todir=&quot;${username}:${password}@host:/dir&quot; ...&gt;
</pre>
Invoke ant with the following command line:
<pre>
    ant -Dusername=me -Dpassword=mypassword target1 target2
</pre>
</p>

<p><strong>Unix Note:</strong> File permissions are not retained when files
are copied; they end up with the default <code>UMASK</code> permissions
instead. This is caused by the lack of any means to query or set file
permissions in the current Java runtimes. If you need a permission-
preserving copy function, use <code>&lt;exec executable="scp" ... &gt;</code>
instead.
</p>

<hr><p align="center">Copyright &copy; 2003-2004 Apache Software Foundation.
All rights Reserved.</p>

</body>
</html>

