rsync has a lot of options I tend to forget.
Here a command that works
rsync --verbose --progress --stats --times --rsh="/usr/bin/ssh -c arcfour" --recursive --bwlimit=40000 <origin> <destination>
<origin> is the path to one or several files/directory. You can use wildcard characters
<destination> is the path to one direcotry or file (if you want to change file name)
<destination> can be on a remote location. It this case should look like
--rsh="/usr/bin/ssh -c arcfour" Transmits over ssh using a very fast cypher (arcfour) to reduce CPU usage at both ends (sometimes CPU is the bottleneck!)
--bwlimit=40000 Limit I/O bandwidth; KBytes per second. Limits bandwith at 40MB/s (link LIMM -> UNI approx 100MB/s) to avoid saturation of the link.
--times preserve modification times. rsync, by default, checks file size and modification times to decide if a file was changed. If modification time differs, performs a checksum of both files. This might be slower than the transfer itself! To always force checksum use
-c, to only compare file size use
--size-only. Be careful with this last option.
--perms keep file permissions. Destination files will be set with same permissions as origin.
--recursive recurse into directories.
--stats give you something to look at if bored (and want to monitor the connection) and a final report to be impressed by 😉