Two of the most widely available tools for secure file transfer are SCP (Secure Copy) and SFTP (Secure File Transfer Protocol) which utilize the SSH protocol to implement security. While SCP is a simple, non-interactive command line tool, it is often a more suitable choice when setting up unattended file transfers using scripts. Alternatively, SFTP is an interactive tool which offers features like remote file listing, copying, deleting, directory creation, etc.
While SCP and SFTP are available out of the box on Linux and Mac systems, ITS also offers downloads of Fetch (login required) for MacOS and WS_FTP (login required) for Windows from the Software Download site. Below are some basic examples showing syntax for both tools. Note that while the examples are specific to Helium, they are broadly applicable, and both commands have extensive man pages available.
specifying an alternate port from off-campus Off-campus access to the default ssh/scp/sftp port of 22 has been blocked at the campus border. Therefore, users must specify an alternate port in order for these tools to work. Please consult with your service provider if you aren't sure what alternate port a resource uses. Helium uses port 40. Some examples below show port specification. |
SCP:
Copy file from local to Helium (note alternate port specification):
[user@local ~]$scp -P 40 file1 hawkid@helium.hpc.uiowa.edu:file1 |
Copy file1 and file2 to your home directory on Helium:
[user@local ~]$scp file1 file2 hawkid@helium.hpc.uiowa.edu:file:~ |
Copy directory from local to Helium:
[user@local ~]$scp -r dir1 hawkid@helium.hpc.uiowa.edu:dir1 |
SFTP
Copy file from local to Helium (note alternate port specification):
[user@local~]$ sftp -o port=40 hawkid@helium.hpc.uiowa.edu Connecting to helium.hpc.uiowa.edu... sftp> put file1 Uploading file1 to /Users/hawkid/file1 file1 100% 840 0.8KB/s 00:00 sftp> |
Copy directory from local to Helium; this process is more involved in that one must create the directory remotely first and then transfer the contents from one to the other – wildcards are helpful for this.
[user@local~]$ sftp hawkid@helium.hpc.uiowa.edu Connecting to helium.hpc.uiowa.edu... sftp> mkdir remote sftp> put local/* remote/ Uploading local/file1 Uploading local/file2 Uploading local/file3 sftp> ls remote/ remote/file1 remote/file2 remote/file3 |