SSH: Secure Copy (scp)#
What Is That?#
Conceptually like
cpRemote copy
Via SSH protocol ⟶ encrypted
Copy Single File From Local To Remote#
Copy /etc/passwd to jfasch’s home directory on home.com
(non-interactively logged in as jfasch). This results in a file
~jfasch/passwd on the remote machine.
$ scp /etc/passwd jfasch@home.com:
Same, but changing the name to my-passwd (effectively using a
destination path relative to jfasch’s home directory). This
results in a file ~jfasch/my-passwd on the remote machine.
$ scp /etc/passwd jfasch@home.com:my-passwd
Same, but changing the destination to /tmp/my-passwd (an absolute
path on the remote machine). This results in a file
/tmp/my-passwd on the remote machine.
$ scp /etc/passwd jfasch@home.com:/tmp/my-passwd
Copy Single File from Remote To Local#
Likewise, scp can copy files from remote to local. (Again, using
the /etc/passwd file, but this time the remote one.) This will
result in a file ~jfasch/passwd on the local machine.
$ scp jfasch@home.com:/etc/passwd .
Same, but changing the name.
$ scp jfasch@home.com:/etc/passwd /tmp/my-passwd
(You get the point)
Copy An Entire Directory Tree (-r)#
Like its ancestor, cp, scp supports the -r option to copy
directories recursively.
Copy all my documents (in ~/Documents) to the remote machine,
under the remote name ~/MyDocuments.
$ scp -r ~/Documents jfasch@home.com:MyDocuments
Copy Multiple File From Here To There#
Like cp, scp can copy multiple files. In this case the
single destination must be a directory, obviously.
$ scp /etc/passwd /etc/group ~/.bashrc jfasch@home.com:MyDocuments
Also recusively,
$ scp -r ~/Downloads ~/Pictures ~/.bashrc jfasch@home.com:MyDocuments
Copy From One Remote To A Different Remote#
scp is not restricted to copying to or from the local machine. You
can use the local machine to copy from one remote machine to another
remote machine.
Here, I use my laptop on the train to copy a project tree from home to a customer.
$ scp -r jfasch@home.com:project joerg.faschingbauer@customer.com:
Note
To save mobile bandwidth though, it would be more appropriate to
not use the laptop as a mediator. Realistically, one would use
remote command execution on home.com. For example, to transfer
the project to customer.com directly,
$ ssh jfasch@home.com "scp project joerg.faschingbauer@customer.com:"
More Options#
Option |
Descriptiotn |
|---|---|
|
Recursive copy |
|
Preserve access timestamps and permissions |
|
Use a port number other than the default, 22. For example,
|