SCP, short for secure copy, is a command-line utility in Linux designed for transferring files between local and remote systems securely. Unlike the standard cp command which operates within a single machine, SCP leverages SSH for encrypted communication, making it ideal for cross-server file operations.
The encryption process in SCP may slightly reduce transfer speeds, but it ensures data security during transmission. This feature becomes particularly useful when dealing with read-only filesystems, as SCP allows you to retrieve important files even under such constraints.
One significant advantage of SCP over alternatives like rsync is its minimal system resource consumption. While rsync might offer faster transfers for large files, it can cause high disk I/O when handling numerous small files, whereas SCP maintains system performance without interference.
SCP Command Syntax
Downloading Files
scp [options] user@host:[remote_file_path] [local_path]
Uploading Files
scp [options] [local_path] user@host:[remote_file_path]
Command Functionality
SCP facilitates secure file copying between Linux systems through SSH protocol. It spuports copying both individual files and entire directory structures.
Parameter Options
-1 Forces use of SSH protocol version 1
-2 Forces use of SSH protocol version 2
-4 Forces IPv4 address resolution only
-6 Forces IPv6 address resolution only
-B Enables batch mode (no password prompts)
-C Enables compression of data during transfer
-p Preserves file timestamps and permissions
-q Suppresses progress indicator
-r Recursively copies directories
-v Verbose output showing debugging information
-c cipher Specifies encryption cipher for data transfer
-F ssh_config Uses alternative SSH configuration file
-i identity_file Specifies private key file for authentication
-l limit Limits bandwidth usage in Kbit/s
-o ssh_option Passes custom SSH options
-P port Specifies alternate port number (uppercase P)
-S program Sets encryption program for transfer
SCP Usage Examples
Downloading Individual Files
scp user@server:/path/filename /local/destination, for example:
scp user@example.com:/home/user/document.txt /tmp/download_location
Retrieves document.txt from the remote server to local temporary directory
Downloading Entire Directories
scp -r user@server:remote_dir/ /local/dir , for example:
scp -r user@example.com:/home/user/documents /tmp/local_backup
Downloads the complete documents directory from remote server to local storage
Uploading Local Files to Remote Server
scp /local/path/filename user@server:/remote/path , for example:
scp /var/www/page.html user@example.com:/var/www/html/
Transfers the local HTML file to the remote web server directory
Uploading Directories to Remote Server
scp -r /local/dir user@server:remote_dir, for example:
scp -P 22 -r project_files user@example.com:/home/user/backup/
Uploads the local project_files directory to remote backup location