Monday, May 16, 2011

Copying Files From Remote Machine Using Cygwin

Accessing Files Using sftp

Secure File Transfer Protocol (sftp) is a file transfer program which runs over an ssh tunnel and uses many features of ssh, including compression and encryption. Essentially, sftp is a drop-in replacement for the standard command-line ftp client, but with ssh authentication.

Starting sftp

The command for starting sftp is as follows:

ComputerName:~# sftp user@sftp.cae.wisc.edu

Where user is your username to login to the Remote Machine.

The first time you connect to sftp.cae.wisc.edu, sftp will report that "The authenticity of the host 'sftp.cae.wisc.edu' can't be established." This means that sftp doesn't have sftp.cae.wisc.edu in its database of known hosts. Answer yes at the prompt to connect to the server.

Next, sftp will add sftp.cae.wisc.edu to its list of known hosts, and ask for your CAE account password. Enter your password, and sftp will log in and present you with the sftp prompt, which should look like this:

sftp>

By default sftp will change the working directory to your CAE Unix home directory

Using sftp

Many commands sftp uses are similar to the Unix shell commands for navigating files and directories, with a few small changes. The most notable difference is that you are working with two computers so there is usually a "local" and "remote" version of each command (prefixed by an "l" to designate a local command). The following commands work just like their Unix counterparts:

cd - change directory on the ftp server to

lcd - change directory on your machine to

ls - list files in the current directory on the ftp server

lls - list files in the current directory on your machine

pwd - print the current directory on the ftp server

lpwd - print the current directory on your machine.

exit - exit from the sftp program.

Getting Files

The get command in sftp allows you to download files from the sftp server.

Usage: get

Where ; is the file on the server you want to download, and is the path you want to put the file on your machine. If you omit the argument, the file is put in the current directory on your machine (see the pwd command).

For example, to download a file named "foo.bar", the following command would be used:

sftp>get foo.bar

To download this file and save it as "readme.txt", the following command would be used:

sftp>get foo.bar readme.txt

Getting Multiple Files

To download more than one file from the sftp server use the mget command.

Usage: mget

mget works by expanding each filename listed and running a get command on each file. The files are copied into the local working directory, which can be changed with the lcd command.

For example, to download all the files in the remote working directory, the following command would be used:

sftp> mget ./*

To download all of the files ending with .txt the following command would be used:

sftp> mget ./*.txt

Accessing Windows Files

When you first connect with sftp, the remote working directory will automatically be set to your Unix home directory on the CAE network. If you want to access your windows files, you will need to change to a different directory. This can be accomplished with a simple cd command. To find where your windows files are located, go to https://www.cae.wisc.edu/cae-auth/winaccess.php. The listing under SFTP client is the directory where you can access your windows files from within sftp.

Recursive Copy

If you try to copy a folder using the get or mget commands, sftp will complain that it "Cannot download non-regular file: filename". This is because the basic sftp client doesn't allow for a recursive copy. However, the program scp will allow you to do this. The scp command will not allow you to see what's on the sftp server, so the files need to be located using the sftp client.

Note: the scp command is a Unix command, and needs to be run from the Unix prompt. NOT within the SFTP client.

Usage: scp user@host:remote-path local-path

scp is like the Unix command cp and should work similarly. To copy a file from your Unix home directory and put it in the working directory, use the following command:

scp @sftp.cae.wisc.edu:~/ ./

Where is your CAE username, and is the file you wish to copy. Enter your password when scp asks for it. scp works just like a get command in sftp.

To recursively copy files or directories from your CAE account, use the -r switch.

For example, to copy the entire directory "tutorial" from my CAE Unix home directory to the home directory on your machine, the following command would be used:

Popular Posts