L’un des outils en CLI les plus puissants pour effectuer des copies de fichiers localement ou en réseau, mais la documentation manpage étant extrêmement fournie, il faut faire le trie dans les options.
Dispo sous Linux, mais aussi OSX (installer via brew) et bien sure sous Windows (sous WSL par ex).

time rsync ./2018/ /Volumes/3To/Photos/2018/ -vrth --delete

Options utiles

-v ou –verbose : il est possible de le spécifier 2 fois ( -v -v) pour avoir un niveau de logs plus important

-r ou –recursive

-h ou –human-readable : indique les tailles avec un suffixe K, M, ou G

-m ou –prune-empty-dirs

-n ou –dry-run

–delete : supprime à destination, les éléments absent de la source

-a ou –archive : équivalent à -rlptgoD

Options pour optimiser

Rsync tente d’optimiser la copie en comparant les tailles de fichiers ainsi que leurs date de dernière modifications. Les options suivantes permettent d’influer dans ce contexte (surtout retenir le -t)

-t ou –times :conserve les dates de modifications et permet une copie optimisée des fichiers déjà copiés (à l’opposé de -I)

-I ou –ignore-times : inverse de -t, force la copie même si le fichier à destination possède la même taille et date de modification qu’à l’origine

–size-only : permet d’utiliser uniquement l’optimisation comparant les tailles de fichiers (zappe la comparaison par timestamp)

-c ou –checksum : pour déterminer les fichiers à copier (en plus de la comparaison de taille) effectue 2 checksum MD4 128-bit de l’ensemble des fichiers, un 1er à la source (attention: très consommateur de temps et resources), un 2nd à destination

A voir

–relative

grsync le GUI de rsync cross-plateforme