How to Move files between machines in Linux
rsync
When you need to have a directory on one machine mirrored on another machine, use rsync. It compares all the files in a directory subtree and copies over any that have changed to the mirrored directory on the other machine. For example, here is how you could “pull” all logs files from livebox.jguru.com to the box from which you execute the rsync command:
$ hostname jazz.jguru.com $ rsync -rabz -e ssh -v 'parrt@livebox.jguru.com:/var/log/jguru/*' \ /backup/web/logs
rsync will delete or truncate files to ensure the files stay the same. This is bad if you erase a file by mistake–it will wipe out your backup file. Add an argument called --suffix to tell rsync to make a copy of any existing file before it overwrites it:
$ hostname jazz.jguru.com $ rsync -rabz -e ssh -v --suffix .rsync_`date '+%Y%m%d'` \ 'parrt@livebox.jguru.com:/var/log/jguru/*' /backup/web/logs
where `date '+%Y%m%d'` (in reverse single quotes) means “execute this date command”.
To exclude certain patterns from the sync, use --exclude:
$ rsync -rabz --exclude=entitymanager/ --suffix .rsync_`date '+%Y%m%d'` \ -e ssh -v 'parrt@livebox.jguru.com:/var/log/jguru/*' /backup/web/logs
scp
To copy a file or directory manually, use scp:
$ scp lecture.html parrt@nexus.cs.usfca.edu:~parrt/lectures
Just like cp, use -r to copy a directory recursively.
