This is a simple tutorial for my colleagues who need to transfer files between Linux/Mac OS X boxes. I love scp and rsync. They are both very simple and there is no need to start a GUI.
scpscp means "SSH copy". Thus you can copy a file from a server to you computer (or even another server) via SSH. It's syntax is very simple.
scp OPTIONS SOURCE DESTINATIONFor example, if I wanna copy all files under /data/MEG/MEG077 on example.com to my current computer, I will do this
scp -r example.com:/data/MEG/MEG077/* .The
-roption means "recursive" that I need to copy everything in
rsyncrsync is good to synchronize files incrementally. "Incrementally" means only copying changed files. It's syntax is as simple as scp.
rsync OPTIONS SOURCE DESTINATION OPTIONSFor example, if I wanna make sure everything under
example.com, except hidden files, is synchronized to my current folder, I will do this.
rsync -azv --delete example.com:/data/ . --exclulde=".*"
zmeans compressing the transmission while
vmeans verbose. The
--deleteoption means deleting files that are not on the source but the destination. The
--excludeoption specifies the filename pattern to avoid in synchronization. Since hidden files on Linux/Mac OS X begin their filename with a dot,
--exclulde=".*"means avoiding all hidden files.
Please be aware of the last backslash (/) after
example.com:/data. When there IS a backslash, it means all subfolders under that path. If there is none, it means the folder itself specified by the path. The same rule applies to both source and destination.
You can also synchronize your local folder to remote servers, or even between two local folders, using rsync.