Once I've ssh'd into my remote server, what would the command be to copy all files from a directory to a local directory on my machine?
rsync
directly from your local machine.
From your local machine:
rsync -chavzP --stats user@remote.host:/path/to/copy /path/to/local/storage
From your local machine with a non standard ssh port:
rsync -chavzP -e "ssh -p $portNumber" user@remote.host:/path/to/copy /local/path
Or from the remote host, assuming you really want to work this way and your local machine is listening on SSH:
rsync -chavzP --stats /path/to/copy user@host.remoted.from:/path/to/local/storage
See man rsync
for an explanation of my usual switches.
If you have SSH access, you don't need to SSH first and then copy, just use Secure Copy (SCP) from the destination.
scp user@host:/path/file /localpath/file
Wild card characters are supported, so
scp user@host:/path/folder/* /localpath/folder
will copy all of the remote files in that folder.If copying more then one directory.
note -r will copy all sub-folders and content too.
scp
rather than rsync
? Also, watch that your shell doesn't try to expand user@host:/path/folder/*
, perhaps by using single quotes ('
).
scp
is, that wasn't my question. Why didn't you use rsync
? This is what is what the question asks for, doesn't require an established SSH session and is often faster and more efficient than scp
.
I think it is better to copy files from your local computer, because if files number or file size is very big, copying process could be interrupted if your current ssh session would be lost (broken pipe or whatever).
If you have configured ssh key to connect to your remote server, you could use the following command:
rsync -avP -e "ssh -i /home/local_user/ssh/key_to_access_remote_server.pem" remote_user@remote_host.ip:/home/remote_user/file.gz /home/local_user/Downloads/
Where v
option is --verbose
, a
option is --archive
- archive mode, P
option same as --partial
- keep partially transferred files, e
option is --rsh=COMMAND
- specifying the remote shell to use.
Success story sharing
/path/to/local/storage
. Like so/path/to/local/storage/copy
. If that's what you want great. However a more common scenario is you want to copy the contents of the remote directory into a directory in your local. Then you would do/path/to/copy/
which would place the contents inside the directory/path/to/local/storage
without creating a local copy directory.