rsync (Everyone seems to like -z, but it is much slower for me)
- a: archive mode - rescursive, preserves owner, preserves permissions, preserves modification times, preserves group, copies symlinks as symlinks, preserves device files.
- H: preserves hard-links
- X: preserves extended attributes
- x: don't cross file-system boundaries
- v: increase verbosity
- --numeric-ds: don't map uid/gid values by user/group name
- --delete: delete extraneous files from dest dirs (differential clean-up during sync)
- --progress: show progress during transfer
ssh
- T: turn off pseudo-tty to decrease cpu load on destination.
- c aes128-gcm@openssh.com: use the weakest but fastest SSH encryption.
- o Compression=no: Turn off SSH compression.
- x: turn off X forwarding if it is on by default.
Original
rsync -aHXx --numeric-ids --delete --info=progress2 -e "ssh -T -c aes128-gcm@openssh.com -o Compression=no -x" /localpath user@dest:/path