Linux / Bash
Beginner
1 min read
File Transfer with scp and rsync
Example
# ---- scp: secure copy ----
# Copy a local file to remote server
scp report.pdf alice@server.example.com:/home/alice/
# Copy remote file to local directory
scp alice@server.example.com:/var/log/app.log /tmp/
# Copy a directory recursively
scp -r /local/project/ alice@server.example.com:/home/alice/
# Use a specific port
scp -P 2222 file.txt alice@server.example.com:/tmp/
# Use a specific identity file
scp -i ~/.ssh/aws.pem file.txt ec2-user@ec2-host:/tmp/
# ---- rsync: efficient file synchronisation ----
# Sync local dir to remote (archive mode)
rsync -av /local/project/ alice@server.example.com:/home/alice/project/
# Dry run — show what would be transferred
rsync -av --dry-run /local/data/ remote:/data/
# Sync with deletion (mirror source exactly)
rsync -av --delete /local/project/ alice@server:/home/alice/project/
# Compress during transfer
rsync -avz /large/data/ alice@server:/data/
# Show progress for each file
rsync -av --progress /local/dir/ alice@server:/remote/dir/
# Exclude patterns
rsync -av --exclude='*.tmp' --exclude='.git/' \
/local/project/ alice@server:/home/alice/project/
# Sync over a non-standard SSH port
rsync -av -e "ssh -p 2222" /local/dir/ alice@server:/remote/dir/
# Local backup (rsync between two local directories)
rsync -av --delete /home/alice/ /mnt/backup/alice/
# Scheduled rsync backup (add to crontab)
# 0 2 * * * rsync -az --delete /home/ /mnt/backup/home/
Related Resources
Linux / Bash Reference
Complete tag & property list
Linux / Bash How-To Guides
Step-by-step practical guides
Linux / Bash Exercises
Practice what you've learned
More in Linux / Bash