SCP stands for Secure Copy (cp is the standard Unix file copy command). It's based on the older command rcp (remote copy).

The official parameters for SCP are as follows (taken from a RedHat Linux 9 installation).

     scp (-pqrvBC46) (-F ssh_config) (-S program) (-P port) (-c cipher)
         (-i identity_file) (-o ssh_option) ((user@)host1:)file1 (...)

The three most commonly used of the options are -r (recursive), -v (verbose) and -P (use a port other than the default, 22). Even these aren't commonly used, so most of the time, you simply need to specify a host:filename or user@host:filename (the username is almost always needed on Windows systems). For example, to copy a local file to a remote machine as the currently logged in user...

     scp thisfile.txt

Or to copy a file from a remote machine, to which I'm user "fred", to my machine...

     scp anotherfile.txt

By default, SCP uses an SSH connection, although one of the options allows you to change this. However, SSH is a decent high encryption protocol so this is almost always used. Additionally, OpenSSH provide free clients and servers for all Unix platforms, and PuTTY is a free client for the Windows platform.

SCP, using the underlying SSH protocol, can use public key authentication. This means if you have a local key which is "known" by the remote machine, no password will be requested. This means you can have an authenticated, secure, file transfer connection, that runs totally non-interactively. Most SSH servers have the SCP server part built in. Some also support SFTP which provides an FTP-style interface to SCP, although this needs an additional package which may or may not be available.

Apart from being good because it's secure, SCP can be an easy way to move files between different platforms. It's also much easier to get to work through firewalls than FTP, because it only uses a single port for control and data, whereas FTP can be much more complicated to get working.