Bird
Raised Fist0
Linux CLIscripting~10 mins

scp and rsync for file transfer in Linux CLI - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - scp and rsync for file transfer
Start: Choose tool
↓
scp or rsync?
scp→Run scp command
↓
Copy file(s)
↓
End: Transfer done
↓
Run rsync command
↓
Compare source & dest
↓
Copy only changes
↓
End: Transfer done
Choose between scp or rsync, run the command, and transfer files; scp copies all files, rsync copies only changes.
Execution Sample
Linux CLI
scp file.txt user@remote:/path/
rsync -avz file.txt user@remote:/path/
Copy file.txt to remote server using scp and rsync commands.
Execution Table
StepCommandActionOutputNotes
1scp file.txt user@remote:/path/Start scp transferConnecting to remote host...scp initiates SSH connection
2scp file.txt user@remote:/path/Copy file.txtfile.txt 100% transferredscp copies entire file
3scp file.txt user@remote:/path/End transferTransfer completescp finishes after full copy
4rsync -avz file.txt user@remote:/path/Start rsync transferConnecting to remote host...rsync initiates SSH connection
5rsync -avz file.txt user@remote:/path/Check differencesfile.txt differs, syncingrsync compares source and destination
6rsync -avz file.txt user@remote:/path/Copy changed partsfile.txt 100% transferredrsync copies only changes
7rsync -avz file.txt user@remote:/path/End transferTransfer completersync finishes after syncing changes
8rsync -avz file.txt user@remote:/path/Check differencesfile.txt identical, no transferIf no changes, rsync skips copying
9EndNo more actionsTransfer doneProcess ends
💡 Transfer ends after copying files fully (scp) or syncing changes (rsync)
Variable Tracker
VariableStartAfter scpAfter rsync startAfter rsync checkAfter rsync copyFinal
ConnectionNoneEstablishedEstablishedEstablishedEstablishedClosed
File Statusfile.txt localfile.txt copiedfile.txt localfile.txt differs or identicalfile.txt synced or skippedfile.txt remote
Transfer Progress0%100%0%Checked100% or 0%Complete
Key Moments - 3 Insights
Why does rsync sometimes transfer less data than scp?
Because rsync compares source and destination files first and only copies changed parts, as shown in execution_table rows 5 and 6.
What happens if the file is already identical on the remote side when using rsync?
rsync detects no changes and skips copying, as shown in execution_table row 8, saving time and bandwidth.
Does scp check for differences before copying files?
No, scp copies the entire file every time without checking, as shown in execution_table rows 1-3.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does rsync decide if it needs to copy the file?
AStep 2
BStep 7
CStep 5
DStep 3
💡 Hint
Check the 'Action' column for rsync steps where it checks differences.
According to variable_tracker, what is the 'Transfer Progress' after scp finishes?
A50%
B100%
C0%
DChecked
💡 Hint
Look at the 'After scp' column for 'Transfer Progress'.
If the file is identical on remote, what output does rsync show according to execution_table?
Afile.txt identical, no transfer
Bfile.txt differs, syncing
Cfile.txt 100% transferred
DTransfer failed
💡 Hint
See execution_table row 8 for rsync behavior when files match.
Concept Snapshot
scp copies files fully over SSH every time.
rsync compares source and destination, copying only changes.
Use scp for simple full copies.
Use rsync to save time and bandwidth.
Both require SSH access.
rsync has options like -a (archive), -v (verbose), -z (compress).
Full Transcript
This visual execution shows how scp and rsync transfer files. First, you choose the tool. scp connects to the remote host and copies the entire file, then finishes. rsync connects, checks if the file differs, and copies only changed parts if needed, or skips copying if files are identical. Variables like connection status, file status, and transfer progress update step-by-step. Key points: rsync saves bandwidth by syncing changes; scp always copies full files. The quizzes test understanding of when rsync copies and how progress is tracked.

Practice

(1/5)
1. What is the primary difference between scp and rsync when transferring files?
easy
A. scp requires no authentication, rsync always does.
B. scp is used only for local copies, rsync only for remote.
C. scp compresses files automatically, rsync does not.
D. scp copies files directly, while rsync syncs only changed parts.

Solution

  1. Step 1: Understand scp behavior

    scp copies entire files securely from one machine to another without checking differences.
  2. Step 2: Understand rsync behavior

    rsync compares source and destination and transfers only changed parts, making it efficient for syncing.
  3. Final Answer:

    scp copies files directly, while rsync syncs only changed parts. -> Option D
  4. Quick Check:

    Difference in transfer method = C [OK]
Hint: Remember: rsync syncs changes, scp copies whole files [OK]
Common Mistakes:
  • Thinking scp syncs files like rsync
  • Believing scp works only locally
  • Assuming rsync doesn't need authentication
2. Which of the following is the correct syntax to copy a file named report.txt from your local machine to a remote server using scp?
easy
A. scp report.txt user@remote:/home/user/
B. scp user@remote:/home/user/ report.txt
C. scp -r report.txt user@remote:/home/user/
D. scp /home/user/report.txt user@remote:

Solution

  1. Step 1: Identify source and destination in scp

    Syntax is scp source destination. Here, source is local file report.txt.
  2. Step 2: Check destination format

    Destination must be remote user and path: user@remote:/home/user/. scp report.txt user@remote:/home/user/ matches this.
  3. Final Answer:

    scp report.txt user@remote:/home/user/ -> Option A
  4. Quick Check:

    Local to remote copy syntax = A [OK]
Hint: Remember: scp source destination, remote uses user@host:path [OK]
Common Mistakes:
  • Reversing source and destination
  • Using -r for single file copy
  • Omitting user@host in remote path
3. What will be the output of this command if the directory backup/ exists on both local and remote, but only one file data.txt changed locally?
rsync -avz backup/ user@remote:/home/user/backup/
medium
A. Only the changed data.txt file will be transferred to remote.
B. All files in backup/ will be transferred again.
C. The command will fail due to missing -r option.
D. The remote directory will be deleted and replaced.

Solution

  1. Step 1: Understand rsync -avz flags

    -a is archive (recursive + preserve), -v verbose, -z compress during transfer.
  2. Step 2: Behavior with existing directories

    rsync compares files and transfers only changed files, so only data.txt will be sent.
  3. Final Answer:

    Only the changed data.txt file will be transferred to remote. -> Option A
  4. Quick Check:

    rsync syncs changed files only = D [OK]
Hint: rsync with -a syncs only changed files, not all [OK]
Common Mistakes:
  • Thinking rsync copies all files every time
  • Believing -r is needed separately with -a
  • Assuming remote directory is deleted
4. You run this command to copy a directory:
scp -r myfolder user@remote:/home/user/
But you get an error: scp: command not found. What is the most likely cause?
medium
A. You forgot to add the -v verbose flag.
B. The scp command is not installed on the local machine.
C. The remote path is incorrect and missing a trailing slash.
D. You need to use rsync instead of scp for directories.

Solution

  1. Step 1: Analyze the error message

    scp: command not found means the local system cannot find the scp program.
  2. Step 2: Check other options

    Verbose flag or remote path errors cause different errors; scp supports directories with -r.
  3. Final Answer:

    The scp command is not installed on the local machine. -> Option B
  4. Quick Check:

    Command not found means missing program = A [OK]
Hint: Command not found means program missing locally [OK]
Common Mistakes:
  • Assuming -v fixes command not found
  • Thinking remote path syntax causes this error
  • Believing scp can't copy directories
5. You want to efficiently backup a large folder project/ from your local machine to a remote server daily. Which command best ensures only new or changed files transfer, compresses data, and preserves permissions?
hard
A. scp -r project/ user@remote:/backup/project/
B. scp project/* user@remote:/backup/project/
C. rsync -avz project/ user@remote:/backup/project/
D. rsync -r project/ user@remote:/backup/project/

Solution

  1. Step 1: Identify requirements

    Need to transfer only new/changed files, compress data, and preserve permissions.
  2. Step 2: Match command options

    rsync -avz means archive (preserves permissions, recursive), verbose, and compress during transfer, ideal for backups.
  3. Step 3: Compare other options

    scp -r copies all files every time without compression; rsync -r lacks archive and compression flags.
  4. Final Answer:

    rsync -avz project/ user@remote:/backup/project/ -> Option C
  5. Quick Check:

    Efficient backup with compression and permissions = B [OK]
Hint: Use rsync -avz for efficient, compressed, permission-preserving backups [OK]
Common Mistakes:
  • Using scp for large repeated backups
  • Omitting -a flag in rsync losing permissions
  • Not compressing data during transfer
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard