SCP or secure copy allows secure transferring of files between a local host and a remote host or between two remote hosts. This post includes SCP example commands. Linux SCP uses the same authentication and security as the Secure Shell (SSH) protocol from which it is based. The SCP command is loved for it’s simplicity, security and pre-installed availability.
SCP example commands
Copy file from a remote host to local host SCP example:
$ scp username@from_host:file.txt /local/directory/
Copy file from local host to a remote host SCP example:
$ scp file.txt username@to_host:/remote/directory/
Copy directory from a remote host to local host SCP example:
$ scp -r username@from_host:/remote/directory/ /local/directory/
Copy directory from local host to a remote hos SCP example:
$ scp -r /local/directory/ username@to_host:/remote/directory/
Copy file from remote host to remote host SCP example:
$ scp username@from_host:/remote/directory/file.txt username@to_host:/remote/directory/
Linux SCP Notes
— SCP example: scp -r firstname.lastname@example.org:/var/www/html/ /home/hydn/backups/test/ Also see: Backup solutions.
— Host can be IP or domain name. Once you click return, you will be prompted for SSH password.
— Although this page covers SCP Linux, the instructions will also work for Mac using “Terminal”. You can also use WinSCP to accomplish this on a Windows PC/server.
— When copying a source file to a target file which already exists, scp will replace the contents of the target file. So be careful.
SCP Linux options
–r Recursively copy entire directories. Note that this follows symbolic links encountered in the tree traversal.
-C Compression enable. Passes the -C flag to ssh to enable compression.
-l limit – Limits the used bandwidth, specified in Kbit/s.
-o ssh_option – Can be used to pass options to ssh in the format used in ssh_config.
-P port – Specifies the port to connect to on the remote host. Note that this option is written with a capital ‘P’.
-p Preserves modification times, access times, and modes from the original file.
-q Quiet mode: disables the progress meter as well as warning and diagnostic messages from ssh.
-v Verbose mode. Print debugging messages about progress. This is helpful in debugging connection, authentication, and configuration problems.
Also, have a look at rsync alternative : man rsync (will write article).
Updated: November 1st 2018