Mirroring
rsync -aSAXHvh --progress --log-file=rsync.log /SOURCE/ /DESTINATION/
-a - archive mode; equals -rlptgoD (no -H,-A,-X)
-A - preserve ACLs (implies -p [preserve permissions])
-S - handle sparse files efficiently and allocate dest files before writing
-X - preserve extended attributes
-H - preserve hard links
-v - increase verbosity
--progress - show progress during transfer
-h - output numbers in a human-readable format
--log-file=FILE - log what we're doing to the specified FILE
Archiving
rsync -avPh --log-file=rsync.log /SOURCE/ /DESTINATION/
-a - archive mode; equals -rlptgoD (no -H,-A,-X)
-v - increase verbosity
-P - same as --partial --progress
--partial - keep partially transferred files
--progress - show progress during transfer
-h - output numbers in a human-readable format
--log-file=FILE - log what we're doing to the specified FILE
over SSH
rsync -avPh -e ssh user@host:/path/ /local/path/
Tip
In order to compare files based on checksum rather then modification date/time/owenrship add the -c flag