Copyright (C) 2000-2012 |
GNU Info (tramp)External transfer methodsExternal 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 |