Accessing Files Using SFTP on Linux
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.
The command for starting sftp is as follows:
ComputerName:~# sftp email@example.com
The first time you connect to sftp.cae.wisc.edu, sftp will report that "The authenticity of 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:
By default sftp will change the working directory to your CAE Unix home directory
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:
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.
The get command in sftp allows you to download files from the sftp server.
For example, to download a file named "foo.bar", the following command would be used:
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.
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
Recursive Copy with SCP
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: scp is a separate program and must be executed from the Unix command line prompt. NOT within the SFTP client.
Usage: scp copy_from copy_to
For example, if you wanted to copy the file "foobar.txt" from the remote location to your own computer, use the command:
scp firstname.lastname@example.org:/path/to/foobar.txt /some/local/directory
Likewise, if you wanted to copy the file "foobar.txt" from your own computer to your CAE remote files, use the command:
scp /path/to/foobar.txt email@example.com:/some/remote/directory
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 home directory to the home directory on your machine, the following command would be used:
ComputerName:~ # scp -r firstname.lastname@example.org:~/tutorial ~/
Where user is your CAE username.