17 mar
2008
Automatisez vos sauvegardes avec RSnapshot !
Posté par KissCoolMan | administration, linux, sauvegardes, serveur
Pour ceux d'entre vous qui utilisent et/ou gèrent un serveur dédié, vous savez qu'il est important de faire continuellement des sauvegardes, non seulement des données présentes sur le serveur (sites Internet par exemple), mais également de la configuration du serveur. J'ai eu récemment dans mon entourage des personnes qui ont perdu toutes leurs données, ou bien d'autres qui ont changé de serveur, et la configuration des applications a dû être entièrement refaite.
De plus, bien qu'il soit facile de réaliser un petit script bash permettant de faire des sauvegardes automatiques, rsnapshot permet de faire des sauvegardes incrémentielles, et donc d'économiser énormément d'espace disque.
Pour éviter ces désagréments, on va automatiser cette tâche laborieuse qu'est la création des sauvegardes.
Rsnapshot (qui n'a strictement rien à voir avec le Air (R)Guitar) est un pur produit du logiciel libre, écrit en Perl, et basé sur l'excellent Rsync. Ce logiciel va nous servir à gérer très facilement nos sauvegardes.
(note : toutes les commandes suivantes ont été réalisées sur la distribution Linux Debian 4.0 « Etch ». Cependant, la plupart des commandes et fichiers doivent être identiques ou quelque peu adaptés selon les paquets présents pour fonctionner sur une autre distribution)
Installation
Etant basé sur rsync, vous allez bien sûr avoir besoin de ce paquet, on va donc l'installer de cette manière :
apt-get install rsync rsnapshot
ou encore, si vous avez amélioré quelque peu votre shell, ça peut ressembler à ça :
i rsync rsnapshot
Ce sera tout pour ce qui est de l'installation, vous devriez déjà posséder les autres paquets nécessaire à l'installation.
Configuration
La configuration de rsnapshot s'effectue dans le fichier /etc/rsnapshot.conf. Attention : ce fichier possède deux spécificités à retenir lors de la configuration :
- chaque champ et sa valeur doivent être séparés par une tabulation, de cette manière :
config_version 1.2 - tous les répertoires que vous entrerez nécessitent un / final :
cmd_rsync /usr/bin/rsync
Chemins (path)
Dans cet article, j'évoquerais uniquement la sauvegarde locale, et dans un article futur, la sauvegarde via SSH
Nous allons commencer par définir l'emplacement de nos backups. Pour cela, il va falloir choisir un endroit avec un peu de place, en comptant :

Le principe des sauvegardes incrémentielles est que les fichiers non modifiés entre deux sauvegardes ne sont pas sauvegardés à nouveau, un simple lien est fait avec la version précédente. Ainsi, si vous voulez simplement sauvegarder votre répertoire de configuration /etc/, en imaginant qu'il utilise 100Mo d'espace disque, un emplacement avec 150Mo de disponible devrait largement suffire. Au contraire, si vous voulez utiliser rsnapshot sur un répertoire où vous faites du montage vidéo, l'espace disque utilisé peut être très élevé, c'est à dire plusieurs fois la taille du répertoire de départ.
Donc, on définit le répertoire où l'on va stocker nos backups :
snapshot_root /home/backups/
pour ma part. Ensuite, pensez à décommenter la ligne cmd_cp si vous installez rsnapshot sur une distribution Linux, afin d'avoir un maximum de fonctionnalités
cmd_cp /bin/cp
Intervalles de sauvegardes
Laissez vous guider par le fichier très bien fait, et très explicite, jusqu'à la section "BACKUP INTERVALS". Ici, on va définir le nombre d'occurences par fréquence de sauvegarde. Cette phrase est surement pas très claire, voici donc deux exemples :
Là, on va donc faire une sauvegarde quotidienne (une fois par jour) 7 fois de suite, et une sauvegarde hebdomadaire (une fois sur semaine) 4 fois de suite. Donc, à un jour J, on peut revenir à n'importe quelle sauvegarde du jour J-N (avec N compris entre 1 et 7), ainsi qu'aux sauvegardes d'il y'a 1 semaine, 2 semaines, 3 semaines, et 1 mois.interval daily 7 interval weekly 4
Dans cet exemple, on peut à tout moment restaurer les données modifiées dans les 12 dernières heures, et on garde également une sauvegarde des 3 derniers jours, et aussi une sauvegarde du mois précédent.interval hourly 12 interval daily 3 interval monthly 1
Il faut bien sûr adapter ces valeurs en fonction de vos besoins, de votre espace disque, et de la fréquence de modification de vos fichiers.
Inclusion / Exclusion de fichiers / répertoires
Il est possible de définir des filtres permettant d'indiquer si des fichiers doivent être inclus ou non dans les sauvegardes. Je vous envoie vers la section règles de filtre de la page de manuel de rsync pour en savoir plus.
On peut donc aller maintenant à la section "BACKUP POINTS", et choisir les répertoires à sauvegarder, en respectant les règles définies tout au début de cet article. Voici les répertoires que j'ai choisi :
backup /etc/ localhost/
backup /usr/ localhost/
backup /var/www/ localhost/
backup /var/svn/ localhost/
backup /var/trac/ localhost/
Plus généralement, on utilise :
backup /repertoire/local/a/sauvegarder/ MachineLocaleOuDistante/
Récapitulatif de la configuration
La configuration est terminée, en voici un récapitulatif, sans les commentaires de base.
#################################################
# rsnapshot.conf - rsnapshot configuration file #
#################################################
#######################
# CONFIG FILE VERSION #
#######################
config_version 1.2
###########################
# SNAPSHOT ROOT DIRECTORY #
###########################
snapshot_root /home/backups/
#################################
# EXTERNAL PROGRAM DEPENDENCIES #
#################################
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
#########################################
# BACKUP INTERVALS #
#########################################
interval daily 7
interval weekly 4
############################################
# GLOBAL OPTIONS #
############################################
verbose 2
loglevel 3
lockfile /var/run/rsnapshot.pid
link_dest 1
###############################
### BACKUP POINTS / SCRIPTS ###
###############################
# LOCALHOST
backup /etc/ localhost/
backup /usr/ localhost/
backup /var/log/ localhost/
backup /var/www/ localhost/
backup /var/svn/ localhost/
backup /var/trac/ localhost/
Vous pouvez tester votre configuration de cette façon :
rsnapshot configtest
Exécution automatique (ajout dans le cron)
Le fichier /etc/cron.d/rsnapshot a été créé automatiquement, mais toutes ses lignes sont commentées, on va donc éditer le fichier selon nos besoins. (petit rappel sur la structure d'un fichier cron)
Pour mon cas, ca donne donc :
# sauvegarde quotidienne tous les jours de la semaine à 3h00 du matin
0 3 * * * root /usr/bin/rsnapshot daily
# sauvegarde hebdomadaire tous les lundis à 3h du matin
0 3 * * 1 root /usr/bin/rsnapshot weekly
N'hésitez pas à poser des questions si vous en avez, ou encore à compléter par votre propre expérience et vos connaissances.
Commentaires
Le mardi 15 avril 2008 à 23:26, djax a écrit :
Le vendredi 18 avril 2008 à 12:19, KissCoolMan a répondu :
Ajouter un commentaire