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?
3 Answers
From your local machine:
rsync -chavzP --stats [email protected]:/path/to/copy /path/to/local/storage
From your local machine with a nonstandard SSH port:
rsync -chavzP -e "ssh -p $portNumber" [email protected]:/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 [email protected]:/path/to/local/storage
Where...
-cenables checksum-based file comparison, which is more thorough than just comparing file sizes and modification times-houtputs file sizes in human-readable format (e.g., KB, MB, GB)-aenables archive mode - preserves symbolic links, permissions, timestamps, owner, and group-vprovides verbose output with detailed information about the file transfer process-zenables compression during file transfer to reduce network bandwidth usage-Pcombines two switches:--partialkeeps partially transferred files--progressshows transfer progress
-e "ssh -p $portNumber"specifies the remote shell to use (SSH) with a custom port number
See man rsync for a deeper explanation of these switches.
18 Comments
/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.rsync has the conventional exit value of 0 on success (and a range of positive integers to denote different failures, as per the "EXIT VALUES" section of man rsync, linked from my 8½-year-old answer). See stackoverflow.com/a/8696712/78845 for catching it.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.
8 Comments
scp rather than rsync? Also, watch that your shell doesn't try to expand user@host:/path/folder/*, perhaps by using single quotes (').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.
1 Comment
"ssh -i $VARIABLE read here
rsyncdirectly from your local machine.