H
10Corp Premium Hosting

The scp Command — Secure File Copy

Last Updated: 2025-01-01 2 min read

Overview

scp (Secure Copy Protocol) uses SSH to securely transfer files between a local machine and a remote server, or between two remote servers. It’s a simple and reliable way to upload, download, or move files without needing FTP.

Basic Syntax

scp [options] source destination

Remote paths use the format: user@host:/path/to/file

Copying Files

Upload a file to a remote server

scp localfile.txt user@server.example.com:/home/user/

Download a file from a remote server

scp user@server.example.com:/home/user/remotefile.txt ./

Copy a file between two remote servers

scp user1@server1.com:/path/file.txt user2@server2.com:/path/

Copying Directories

Use the -r (recursive) flag to copy entire directories:

Upload a directory

scp -r /local/my-site/ user@server.example.com:/home/user/public_html/

Download a directory

scp -r user@server.example.com:/home/user/public_html/ ./backup/

Specifying a Custom SSH Port

If your server uses a non-standard SSH port, use the -P flag (uppercase):

scp -P 2222 localfile.txt user@server.example.com:/home/user/
scp -P 2222 -r /local/folder/ user@server.example.com:/home/user/

Useful Flags Reference

FlagDescription
-rRecursively copy entire directories
-P PORTSpecify remote SSH port (uppercase P)
-pPreserve modification times, access times, and modes
-CEnable compression during transfer
-l LIMITLimit bandwidth in Kbit/s
-i KEYUse a specific SSH private key file
-vVerbose mode — useful for debugging
-qQuiet mode — suppress progress meter

Practical Examples

Upload a database backup

scp ~/backups/database.sql.gz user@server.example.com:/home/user/backups/

Download logs for local analysis

scp user@server.example.com:/home/user/logs/error.log ./

Transfer with compression for large files

scp -C largefile.tar.gz user@server.example.com:/home/user/

Use a specific SSH key

scp -i ~/.ssh/my_private_key file.txt user@server.example.com:/home/user/

Limit bandwidth to avoid saturating the connection

scp -l 5000 largefile.zip user@server.example.com:/home/user/

This limits the transfer to approximately 5000 Kbit/s (~625 KB/s).

scp vs. rsync

Featurescprsync
SimplicityVery simple syntaxMore options, slightly complex
Incremental transferNo — always copies everythingYes — only copies changed parts
Resume interrupted transfersNoYes
Bandwidth efficiencyCopies entire filesDelta-based, much more efficient
Best forQuick one-time transfersRegular syncing and backups

For recurring transfers or large data sets, consider using rsync instead.

Tips

  • Always verify paths before transferring — especially when uploading to production directories like public_html.
  • Use -v if a transfer hangs or fails to diagnose connection issues.
  • Compress large files with tar or gzip before transferring to reduce transfer time.
Tags: ssh linux scp file-transfer

Still need help?

Our support team is available 24/7 to assist you.