rsync

Publié le 17/01/2015

Pour transférer des fichiers de manière sécurisé, rien de mieux qu'SSH (ou qu'un disque externe coulé dans du béton. Au choix). [SCP](|filename|2013-03-25 scp-basics.md) permet par exemple de transférer des fichiers au travers du protocole ssh, mais ne gère pas la reprise d'un transfert échoué. Pour plus de fonctionnalités, il existe rsync, qui offre à nos petits yeux ébahis plein de nouvelles fonctionnalités super utiles: la reprise de transfert en cas de foirage complet, la synchronisation de dossiers, ... C'est un outil de sauvegarde pratique, sur lequel se basent notamment Duplicity et Deja-Dup.

Utilisation

$ rsync -r -P -e ssh login@server:path/ folder/

Dans l'exemple ci-dessus, les paramètres sont:

  • -r pour un transfert rĂ©cursif. Sans ce paramètre, seul les fichiers prĂ©sents dans le dossier racine seront transfĂ©rĂ©s.
  • -P pour avoir le mĂŞme effet que --partial --progress: une barre de progression s'affiche pour chaque fichier transfĂ©rĂ©, et le tĂ©lĂ©chargement de fichiers incomplets est repris Ă  l'endroit oĂą il avait Ă©tĂ© abandonnĂ©.
  • -e pour spĂ©cifier le shell Ă  utiliser
  • Les deux derniers paramètres sont : SOURCE et DESTINATION. Ici, on va se connecter avec l'utilisateur login sur la machine server et rapatrier tous les dossiers qui se trouvent dans path vers le rĂ©pertoire local qui s'appelle folder.

Parmi les autres paramètres intéressants:

  • -t pour garder les informations de dates de modifications sur les fichiers
  • -v pour entrer dans un mode verbeux
  • -u pour synchroniser les dossiers, en prenant en compte les dates de modifications des fichiers pour savoir s'il doit envoyer une nouvelle version ou non. Attention que ce paramètre n'a pas d'intĂ©rĂŞt si le transfert prĂ©cĂ©dent a Ă©chouĂ©: comme le fichier (a moitiĂ©) transfĂ©rĂ© a la mĂŞme heure et date de modification que le fichier qu'rsync tente d'envoyer, il sera simplement skippĂ©, alors qu'il aurait dĂ» continuer le transfert grâce au paramètre -P. Pour une sauvegarde/copie, Ă©vitez ce paramètre, sauf si vous ĂŞtes sĂ»r que la copie prĂ©cĂ©dente a rĂ©ussi.
  • --delete pour supprimer les fichiers qui se trouvent dans la destination, mais pas dans la source
  • -z pour compresser les fichiers et gagner un peu au niveau du transfert.

Attention également aux / après les chemins vers les répertoires. Oubliez le, et cela créera un nouveau répertoire dans le répertoire cible. Ajoutez le pour ne synchroniser que le contenu.

Synology

Si vous comptez utiliser votre Synology comme répertoire de destination, il se peut que vous tombiez sur le message d'erreur suivant:

Permission denied, please try again.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

Si c'est le cas, vous devrez activer un service sur le NAS:

  • Dans Main Menu, cliquez sur Backup & Replication et sĂ©lectionnez Backup Services.
  • Dans cet onglet, cochez l'option Enable network backup service.

A présent, vous pourrez utiliser rsync pour transférer vos documents vers le NAS.

Mon but ici est de synchroniser mon profil utilisateur (~/ en gros). De nouveau, avec la commande ci-dessus, cela va synchroniser tous mes documents et fichiers. Problème: cela embarque également les dot files. Une solution pour ceci est d'ajouter le paramètre --exclude ".*".

Finalement

En combinant tous les paramètres, ma commande rsync ressemble est la suivante:

rsync -rtv -P -e "ssh -p 11111" my_folder/ login@server:path/ --exclude ".*" --delete

Sources