GNU Info

Info Node: (tramp)External transfer methods

(tramp)External transfer methods


Next: Multi-hop Methods Prev: Inline methods Up: Configuration
Enter node , (file) or (file)node

External transfer methods
=========================

The external transfer methods operate through multiple channels, using
the remote shell connection for many actions while delegating file
transfers to an external transfer utility.

   This saves the overhead of encoding and decoding that multiplexing
the transfer through the one connection has with the inline methods.

   If you want to use an external transfer method you _must_ be able to
execute the transfer utility to copy files to and from the remote
machine without any interaction.

   This means that you will need to use `ssh-agent' if you use the
`scp' program for transfers, or maybe your version of `scp' accepts a
password on the command line.(1) If you use `rsync' via `ssh' then the
same rule must apply to that connection.

   If you cannot get `scp' to run without asking for a password but
would still like to use `ssh' to secure your connection, have a look at
the `ssh' based inline methods.

`rcp'  --  `rsh' and `rcp'
     This method uses the `rsh' and `rcp' commands to connect to the
     remote machine and transfer files.  This is probably the fastest
     connection method available.

     The alternative method `remcp' uses the `remsh' and `rcp'
     commands.  It should be applied on machines where `remsh' is used
     instead of `rsh'.

`scp'  --  `ssh' and `scp'
     Using `ssh' to connect to the remote host and `scp' to transfer
     files between the machines is the best method for securely
     connecting to a remote machine and accessing files.

     The performance of this option is also quite good. It may be
     slower than the inline methods when you often open and close small
     files however.  The cost of the cryptographic handshake at the
     start of an `scp' session can begin to absorb the advantage that
     the lack of encoding and decoding presents.

     There are also two variants, `scp1' and `scp2', that call `ssh -1'
     and `ssh -2', respectively.  This way, you can explicitly select
     whether you want to use the SSH protocol version 1 or 2 to connect
     to the remote host.  (You can also specify in `~/.ssh/config', the
     SSH configuration file, which protocol should be used, and use the
     regular `scp' method.)

     Two other variants, `scp1_old' and `scp2_old', use the `ssh1' and
     `ssh2' commands explicitly.  If you don't know what these are, you
     do not need these options.

     All the `ssh' based methods support the kludgy `-p' feature where
     you can specify a port number to connect to in the host name.  For
     example, the host name `host#42' tells TRAMP to specify `-p 42' in
     the argument list for `ssh'.

`rsync'  --  `ssh' and `rsync'
     Using the `ssh' command to connect securely to the remote machine
     and the `rsync' command to transfer files is almost identical to
     the `scp' method.

     While `rsync' performs much better than `scp' when transferring
     files that exist on both hosts, this advantage is lost if the file
     exists only on one side of the connection.

     The `rsync' based method may be considerably faster than the `rcp'
     based methods when writing to the remote system. Reading files to
     the local machine is no faster than with a direct copy.

     This method supports the `-p' hack.

`scpx' -- `ssh' and `scp'
     As you would expect, this is similar to `scp', only a little
     different.  Whereas `scp' opens a normal interactive shell on the
     remote host, this option uses `ssh -t -t HOST -l USER /bin/sh' to
     open a connection.  This is useful for users where the normal
     login shell is set up to ask them a number of questions when
     logging in.  This procedure avoids these questions, and just gives
     TRAMP a more-or-less `standard' login shell to work with.

     This is also useful for Windows users where `ssh', when invoked
     from an Emacs buffer, tells them that it is not allocating a
     pseudo tty.  When this happens, the login shell is wont to not
     print any shell prompt, which confuses TRAMP mightily.  Maybe this
     applies to the Cygwin port of SSH.

     This method supports the `-p' hack.

`pscp' -- `plink' and `pscp'
     This method is similar to `scp', but it uses the `plink' command
     to connect to the remote host, and it uses `pscp' for transferring
     the files.  These programs are part of PuTTY, an SSH
     implementation for Windows.

     CCC: Does `plink' support the `-p' hack?

`fcp' -- `fsh' and `fcp'
     This method is similar to `scp', but it uses the `fsh' command to
     connect to the remote host, and it uses `fcp' for transferring the
     files.  `fsh/fcp' are a front-end for `ssh' which allow for
     reusing the same `ssh' session for submitting several commands.
     This avoids the startup overhead of `scp' (which has to establish
     a secure connection whenever it is called).  Note, however, that
     you can also use one of the inline methods to achieve a similar
     effect.

     This method uses the command `fsh HOST -l USER /bin/sh -i' to
     establish the connection, it does not work to just say `fsh HOST
     -l USER'.

     There is no inline method using `fsh' as the multiplexing provided
     by the program is not very useful in our context.  TRAMP opens
     just one connection to the remote host and then keeps it open,
     anyway.

`ftp'
     This is not a native TRAMP method. Instead of, it forwards all
     requests to Ange-FTP.

`smb' -- `smbclient'
     This is another not natural TRAMP method.  It uses the `smbclient'
     command on different Unices in order to connect to an SMB server.
     An SMB server might be a Samba (or CIFS) server on another UNIX
     host or, more interesting, a host running MS Windows.  So far, it
     is tested towards MS Windows NT, MS Windows 2000, and MS Windows
     XP.

     The first directory in the localname must be a share name on the
     remote host.  Remember, that the `$' character in which default
     shares usually end, must be written `$$' due to environment
     variable substitution in file names.  If no share name is given
     (i.e. remote directory `/'), all available shares are listed.

     Since authorization is done on share level, you will be prompted
     always for a password if you access another share on the same host.
     Due to security reasons, the password is not cached.

     MS Windows uses for authorization both a user name and a domain
     name.  Because of this, the TRAMP syntax has been extended: you can
     specify a user name which looks like `user%domain' (the real user
     name, then a percent sign, then the domain name).  So, to connect
     to the machine `melancholia' as user `daniel' of the domain
     `BIZARRE', and edit `.emacs' in the home directory (share
     `daniel$') I would specify the filename
     `/smb:daniel%BIZARRE@melancholia:/daniel$$/.emacs'.

     The domain name as well as the user name are optional.  If no user
     name is specified at all, the anonymous user (without password
     prompting) is assumed.  This is different from all other TRAMP
     methods, where in such a case the local user name is taken.

     The `smb' method supports the `-p' hack.

     *Please note:* If Emacs runs locally under MS Windows, this method
     isn't available.  Instead of, you can use UNC file names like
     `//melancholia/daniel$$/.emacs'.  The only disadvantage is that
     there's no possibility to specify another user name.


   ---------- Footnotes ----------

   (1) PuTTY's `pscp' allows you to specify the password on the command
line.


automatically generated by info2www version 1.2.2.9