How do I copy a folder from remote to local using scp?
scp -r [email protected]:/path/to/foo /home/user/Desktop/
By not including the trailing '/' at the end of foo, you will copy the directory itself (including contents), rather than only the contents of the directory.
From man scp
(See online manual)
-r Recursively copy entire directories
To copy all from Local Location to Remote Location (Upload)
scp -r /path/from/local username@hostname:/path/to/remote
To copy all from Remote Location to Local Location (Download)
scp -r username@hostname:/path/from/remote /path/to/local
Custom Port where xxxx
is custom port number
scp -r -P xxxx username@hostname:/path/from/remote /path/to/local
Copy on current directory from Remote to Local
scp -r username@hostname:/path/from/remote .
Help:
-r
Recursively copy all directories and files- Always use full location from
/
, Get full location/path bypwd
scp
will replace all existing fileshostname
will be hostname or IP address- if custom port is needed (besides port 22) use
-P PortNumber
- . (dot) - it means current working directory, So download/copy from server and paste here only.
Note: Sometimes the custom port will not work due to the port not being allowed in the firewall, so make sure that custom port is allowed in the firewall for incoming and outgoing connection
To use full power of scp you need to go through next steps:
- Public key authorisation
- Create SSH aliases
Then, for example if you have this ~/.ssh/config:
Host test
User testuser
HostName test-site.example
Port 22022
Host prod
User produser
HostName production-site.example
Port 22022
you'll save yourself from password entry and simplify scp syntax like this:
scp -r prod:/path/foo /home/user/Desktop # copy to local
scp -r prod:/path/foo test:/tmp # copy from remote prod to remote test
More over, you will be able to use remote path-completion:
scp test:/var/log/ # press tab twice
Display all 151 possibilities? (y or n)
For enabling remote bash-completion you need to have bash-shell on both <source>
and <target>
hosts, and properly working bash-completion. For more information see related questions:
How to enable autocompletion for remote paths when using scp?
SCP filename tab completion