Copy files between hosts using Secure Copy Protocol over SSH.

# To copy a local file to a remote host:
scp <path/to/local_file> <remote_host>:<path/to/remote_file>

# To use a specific port when connecting to the remote host:
scp <path/to/local_file> -P <port> <remote_host>:<path/to/remote_file>

# To copy a file from a remote host to a local directory:
scp <remote_host>:<path/to/remote_file> <path/to/local_directory>

# To recursively copy the contents of a directory from a remote host to a local directory:
scp -r <remote_host>:<path/to/remote_directory> <path/to/local_directory>

# To copy a file between two remote hosts transferring through the local host:
scp -3 <host1>:<path/to/remote_file> <host2>:<path/to/remote_directory>

# To use a specific username when connecting to the remote host:
scp <path/to/local_file> <remote_username>@<remote_host>:<path/to/remote_directory>

# To use a specific ssh private key for authentication with the remote host:
scp -i <~/.ssh/private_key> <local_file> <remote_host>:</path/remote_file>

# ---

# Copy the file "foobar.txt" from a remote host to the local host
scp your_username@remotehost.edu:foobar.txt /some/local/directory

# Copy the file "foobar.txt" from the local host to a remote host
scp foobar.txt your_username@remotehost.edu:/some/remote/directory

# Copy the directory "foo" from the local host to a remote host's directory "bar"
scp -r foo your_username@remotehost.edu:/some/remote/directory/bar

# Copy the file "foobar.txt" from remote host "rh1.edu" to remote host "rh2.edu"
scp your_username@rh1.edu:/some/remote/directory/foobar.txt
your_username@rh2.edu:/some/remote/directory/

# Copying the files "foo.txt" and "bar.txt" from the local host to your home directory on the remote host
scp foo.txt bar.txt your_username@remotehost.edu:~

# Copy the file "foobar.txt" from the local host to a remote host using port 2264
scp -P 2264 foobar.txt your_username@remotehost.edu:/some/remote/directory

# Copy multiple files from the remote host to your current directory on the local host
scp your_username@remotehost.edu:/some/remote/directory/{a,b,c} .
scp your_username@remotehost.edu:~/{foo.txt,bar.txt} .

# scp Performance
# ---------------

# By default scp uses the Triple-DES cipher to encrypt the data being sent.
# Using the Blowfish cipher has been shown to increase speed. This can be done
# by using option -c blowfish in the command line.
scp -c blowfish some_file your_username@remotehost.edu:~

# It is often suggested that the -C option for compression should also be used
# to increase speed. The effect of compression, however, will only significantly
# increase speed if your connection is very slow. Otherwise it may just be adding
# extra burden to the CPU.

# An example of using blowfish and compression:
scp -c blowfish -C local_file your_username@remotehost.edu:~

##
# From local computer or local server to remote server
#
# You will be prompted for the password for user2@host2.com.
##
scp /path/to/desired/file.txt user2@host2.com:/path/to/new/copy

##
# From remote server to local computer or local server
#
# You will be prompted for the password for user1@host1.net.
##
scp user1@host1.net:/path/to/desired/file.txt /path/to/new/copy

##
# From remote server to remote server
#
# You will be prompted for the passwords for both user1@host1.net and
# user2@host2.com.
##
scp user1@host1.net:/path/to/desired/file.txt user2@host2.com:/path/to/new/copy

##
# Copying entire directories
#
# Use the -r flag to recursively copy a directory and its contents.
##
scp -r user1@host1.net:/path/to/directory user2@host2.com:/path/to/new/copy