--- title: Howto Rsync categories: network ... Rsync (*Remote synchronization*) permet de réaliser des synchronisations distante à travers SSH. Cette méthode est unidirectionnelle où l'on peut effectuer des sauvegardes incrémentielles ou différentielles. * [https://rsync.samba.org/](https://rsync.samba.org/) * [https://fr.wikipedia.org/wiki/Rsync](https://fr.wikipedia.org/wiki/Rsync) ## Installation ~~~ # apt install rync $ rsync --version rsync version 3.1.2 protocol version 31 ~~~ ## Premiers pas Admettons que l'on veut copier des données du serveur-A vers le serveur-B. ~~~ user@serveur-A:~$ rsync -vd mon-dossier serveur-B:/home/user/ ~~~ Ainsi on retrouvera le dossier sur le serveur distant. ~~~ user@serveur-B:~$ ls mon-dossier/ un-fichier1.txt un-fichier2.txt ~~~ Liste des paramètres les plus communs : ~~~ -n = "Test si la copie peut se faire" -z = "compression" -v = "mode verbeux" -q = "quiet -> pas de sortie en stdout" -h = "les infos sont lisible par un humain" -d = "Copie les dossiers sans avoir besoin de lui indiquer qu'il faut le faire récursivement" ~~~ ## Commandes avancées ~~~ -4 = "Utiliser une connexion ipv4" -6 = "Utiliser une connexion ipv6" -P = "suivre la progression du transfère d'un fichier" -r = "Mode récursif" -a = "archive, repecter les liens symboliques" --delete = "supprimer les données distantes qui sont absentes depuis la source" -e = "pour exécuter une commande shell" ~~~ Exemples : *-e* : Faire un rsync sur une serveur distant, avec un port ssh particulier : ~~~ user@serveur-A:~$ rsync -avn /home/user/ -e "ssh -p SSH_PORT" "user@serveur-B:/home/user/" ~~~ ## FAQ ### connection unexpectedly closed Si l'on obtient un erreur ressemblant à : ~~~ Write failed: Broken pipe rsync: connection unexpectedly closed (128109911 bytes received so far) [receiver] rsync error: error in rsync protocol data stream (code 12) at io.c(601) [receiver=3.0.7] rsync: connection unexpectedly closed (128109911 bytes received so far) [generator] rsync error: unexplained error (code 255) at io.c(601) [generator=3.0.7] ~~~ Cela peut venir dans certains cas d'un routeur coupant agressivement les sessions en cas d'inactivité. Dans ce cas, une solution est d'ajouter l'option suivante en Rsync Over SSH : `-e "ssh -o ServerAliveInterval=5"`