Synchroniser ses ordinateurs avec Rsync

Prérequis : installer et autoriser ssh.

Si, comme moi, vous possédez plusieurs ordinateurs et que vous souhaitez non seulement sauvegarder mais également synchroniser vos données personnelles, alors Rsync est l’outil qu’il vous faut. Rsync signifie Remote synchronisation, c’est-à-dire Synchronisation à distance.

Son gros avantage est qu’il ne recopie pas à chaque fois la totalité de vos répertoires. Il ne prend en compte que les changements survenus depuis la dernière sauvegarde. Si vous avez juste créé un nouveau fichier ou modifié le contenu d’un fichier existant, il va se contenter de transférer celui-ci et ignorer tout le reste. Prenons un exemple concret. Voici la configuration informatique dans notre maison:

  • Mon ordinateur de bureau équipé de la distribution Archlinux ,
  • Le MacBook de ma compagne équipé d’Ubuntu (parce qu’il était soi-disant obsolète),
  • Mon ordinateur portable HP 17 pouces équipé de la distribution Linux Mint,
  • Mon netbook HP-Mini 210 équipé de Debian Server. Son processeur est cadencé en 32-Bit. C’est un ordinateur qui a dix ans et qui fonctionne toujours, mais il est de plus en plus lent et il ne supporte que des distributions très légères. Je l’ai donc transformé en serveur et j’ai installé le strict minimum. Pas d’interface graphique, pas d’environnement de bureau. C’est une simple console tty. Il n’a besoin de rien d’autre ; je lui demande juste de stocker mes données personnelles et celle de ma compagne. Pour ce faire, j’ai créé deux profils utilisateurs.

Avant d’éteindre l’ordinateur et d’aller dormir, je veux sauvegarder mes changements et synchroniser les répertoires Documents de mon ordinateur de bureau et de mon netbook. Pour cela, j’entre cette commande qui utilise le protocole ssh pour faire le transfert.

rsync -avz --delete-after ~/Documents benoit@192.168.178.50:~
rsync Nom de la commande.
-a signifie –archive. Cette option gère la récursivité du transfert.
-v signifie –verbose. Cette option vous donne plus de détails sur la synchronisation en cours.
-z signifie –compress. Cette option se charge de compresser les données à transférer.
–delete-after Fichiers et répertoires présents sur le serveur mais pas sur la source, vont être supprimés après
transfert.
~/Documents Répertoire source. Ici, le symbole ~ signifie /home/benoit.
benoit@192.168.178.50:~ Adresse de destination, c’est-à-dire /home/benoit mais pas le même que le /home/benoit précédent!
Je pense que vous l’aurez compris. Notez qu’il n’y a pas d’espace autour des deux petits points.

J’ai rédigé un petit script qui me permet de mettre à jour quatre répertoires différents (Documents, Images, Musique, Videos). Il est tout simple. Le voici:

https://pastebin.com/5hzKZ6af

Ce script prend un paramètre qui correspond à la dernière valeur de l’adresse IP de destination. Si par exemple, l’adresse du netbook est 192.168.178.50, alors le script sera lancé de cette manière:

./rsync.sh 50

Sur tous mes appareils, mon nom d’utilisateur est benoit. C’est la raison pour laquelle je l’ai remplacé par $USER dans le script. Cela me permet éventuellement de synchroniser directement deux ordinateurs sans passer par le netbook-serveur. Il me suffit juste de modifier la valeur passée en argument. Cela dit, il est préférable de passer par le netbook-serveur, d’autant plus que sa mise en oeuvre est d’une simplicité enfantine. Il suffit de l’allumer et c’est tout! Je n’ai même pas besoin de me connecter. Au lancement du script, $USER sera remplacé par mon nom d’utilisateur ou celui de ma compagne, et évidemment Rsync demandera le mot de passe correspondant.

Il existe aussi une option intéressante qui permet d’exclure certains fichiers de la synchronisation. Si par exemple, vous ne voulez pas synchroniser le fichier ~/Documents/Jardinage.odt, vous pouvez entrer la commande suivante:

rsync -avz --exclude 'jardinage.odt' --delete-after ~/Documents benoit@192.168.178.50:~

Si vous voulez exclure plusieurs fichiers, vous pouvez regrouper ces derniers dans un fichier excluded.txt (un par ligne!) et utiliser l’option –exclude-from suivi du signe =.

jardinage.odt
partition.odt
factures.ods
rsync -avz --exclude-from='excluded.txt' --delete-after ~/Documents benoit@192.168.178.50:~

Deuxième possibilité, vous pouvez utiliser les accolades:

rsync -avz --exclude={'jardinage.odt','partition.odt','facture.ods'} --delete-after ~/Documents benoit@192.168.178.50:~

Voilà… N’hésitez pas à visiter le site officiel de Rsync. Cette page est également très intéressante : https://explainshell.com/explain/1/rsync

Joyeux Noël à toutes et à tous. Prenez soin de vous et de vos proches.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s