Sous linux rsync permet de sauvegarder ou synchroniser des dossiers. Le but est de sauvegarder un ensemble de dossiers entre 2 machines d’un même réseau local.
[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »rsync%20-av%20–delete%20–backup%20–backup-dir%3D%2Ftmp%2FCorbeille%0A%20%20%20%20%20%20–exclude%3D%2Fmnt%2FHd1%2Ftrashbox%20-e%20%22%2Fbin%2Fssh%22%20root%40192.168.0.x%3A%2Fsource%20%2Fdestination%2F »/]
Décryptage de la commande rsync :
-av
: le a
pour le mode d’archivage classique et le v
pour que le mode verbeux.
--delete
: permet de supprimer dans la destination les fichiers qui ne sont plus présent dans la source (mode mirroir).
--backup
: ajoute une fonction de sauvegarde des fichiers effacées avec la commande --delete
ce qui génère une sorte de poubelle des fichiers effacés.
--backup-dir=
: indique l’emplacement des fichiers qui sont mis à la poubelle.
--exclude=
: permet d’exclure un sous dossier de l’ensemble sauvegardé.
-e "/bin/ssh"
: indique l’utilisation d’une connexion à distance pour atteindre les fichiers. Dans notre cas, c’est par ssh et c’est pour la source qui se trouve à distance.
root@192.168.0.x:/source
: indique la source. Elle se trouve à distance et on utilise l’utilisateur root
sur la machine distante 192.168.0.x
Pour que la connexion puisse se réaliser sans utiliser le mot de passe de root, il faut utiliser un échange de clefs SSH comme expliqué dans cet article
/destination/
: indique le dossier de destination
Explication sur le choix du
/
mis à la fin des syntaxes de la source et de la destination.
Le fait de pas mettre/
à la fin de/source
et dans mettre un à la fin de/destination/
permet de créer une arborescence de sauvegarde du type/destination/source
automatiquement. La racine de la source est directement prise et générée sur le dossier de destination.
Pour planifier cette sauvegarde, il faut mettre la commande dans un fichier bash puis faire un appel de ce fichier dans son Crontab.
Création du script de sauvegarde :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »nano%20%2Fhome%2Froot%2Fscripts%2Fsauvegarde.sh »/]
On met la commande précédente de rsync à l’intérieur. On rend le script exécutable.
[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »chmod%20%2Bx%20%2Fhome%2Froot%2Fscripts%2Fsauvegarde.sh »/]
Puis on l’ajoute dans le Crontab en loguant sa sortie :
[pastacode lang= »bash » message= » » highlight= » » provider= »manual » manual= »45%200%20*%20*%20*%20%2Fhome%2Froot%2Fscripts%2Fsauvegarde.sh%20%3E%3E%20%2Fhome%2Froot%2Flog%2Fsauvegarde_totale.log%202%3E%261″/]