Solution de sauvegarde basée sur rsync

Je vous propose dans cet article la mise en place d’un script de sauvegarde basé sur « rsync ». Il s’agit d’une solution légère et facile à mettre en œuvre.

Le besoin

Comme tout le monde, je possède des données numériques que je ne souhaite surtout pas perdre. Il s’agit principalement de photographies qui s’accumulent au fil des ans.

Malgré les années, ces données restent vivantes. En effet, je suis régulièrement amené à modifier ces dernières (retouches, association de tags…). Mon système d’organisation n’est pas très original. En effet, mes photographies sont stockées dans des dossiers organisés par date. Aussi, si je veux une sauvegarde à jour, je dois pouvoir facilement sauvegarder aussi bien des dossiers récents que des dossiers pouvant dater de quelques années.

Je souhaite donc pouvoir balayer toute ma collection tout en minimisant le temps de sauvegarde. De plus, je veux d’une part une solution légère à mettre en œuvre et d’autre part un système qui me permet de directement exploiter le support de sauvegarde sans avoir à rentrer dans des procédures complexes de restauration. Ces contraintes éliminent donc les solutions de sauvegarde et d’archivage comme « Bacula ».

L’utilisation de « rsync » répond à l’ensemble de mes critères. Je vous propose donc un petit script permettant d’automatiser la procédure.

Script de sauvegarde

Mes données sont stockées sur une machine réseau me servant de NAS. Les ressources à sauvegarder peuvent ne pas être disponibles pour une raison ou une autre. Il est nécessaire de tester leur présence avant de lancer la sauvegarde.

Les données sont sauvegardée sur un disque externe. Là encore, ce dernier peut ne pas être présent ou simplement pas automatiquement monté. Il faut donc vérifier aussi la présence du disque de destination.

Je vous livre donc mon script ci-dessous :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash
REPERTOIRE_SOURCE="/mnt/photographies/"
REPERTOIRE_DESTINATION="/run/media/laurent/yop/personnel/Photographies/"
 
# Détecter la présence du volume source et interrompre l'opération si nécessaire
if [ `ls $REPERTOIRE_SOURCE | wc -l` == 0 ]
then
echo "Attention, le disque source n'est pas présent ($REPERTOIRE_SOURCE)"
exit
fi
 
# Détecter la présence du volume de destination et interrompre l'opération si nécessaire
if [ ! -e "$REPERTOIRE_DESTINATION" ]
then
echo "Attention, le disque de sauvegarde n'est pas présent ($REPERTOIRE_DESTINATION)"
exit
fi
 
# Ajouter "--dry-run" pour faire la synchro à blanc  
rsync -av --del --stats --progress --filter "- .thumbnails/" --filter "- .Trash/" --filter "- Thumbs.db" --filter "- .directory" --filter "- batch.log" --filter "- .picasa.ini" --filter "- .thumbnails/" --filter "- .directory/" --filter "- dead.letter/" --filter "- .recycle/" $REPERTOIRE_SOURCE "$REPERTOIRE_DESTINATION"
 
echo "La commande de sauvegarde a terminé son travail..."
echo "Vérifiez dans le terminal s'il n'y a pas eu d'erreur !"

Ce script est déposé sur « GitHub« . Il est donc possible qu’une version plus à jour y soit disponible.

Ce dernier est relativement simple :

  • dans un premier temps on définit les dossiers sources et cible ;
  • dans un deuxième temps on vérifie la disponibilité du dossier source et du dossier de sauvegarde ;
  • enfin, on procède à la sauvegarde à proprement parlée en écartant les fichiers indésirables (ici, il s’agit de fichier en relation avec mes photographies). On notera l’utilisation de l’option « –del » permettant de supprimer les données sur le support de sauvegarde qui ne sont plus présentes dans le dossier source.

Le script peut sans aucun doute être amélioré en prenant en compte d’autres paramètres. Toutefois, ce dernier me semble constituer une première base de travail.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *