Rsnapshot
Introduction
Vous le savez maintenant, les sauvegardes sont indispensables… Sauvegardes. Nécessaires, mais facile à oublier, sauf si elles sont effectuées automatiquement.
Voici un tutorial qui décrit la procédure pour mettre en place une solution de sauvegarde automatique simple basée sur rsnapshot.
Rsnapshot est un script écrit en perl.
Il utilise Rsync (et ssh si vous le souhaitez) pour effectuer des sauvegardes à intervalle régulier.
Il est capable de réaliser des sauvegardes d’un systèmes de fichier ou bien de bases de données par l’intermédiaire de scripts.
Un des principaux avantages de rsnapshot est son extrême simplicité.
rsnapshot utilise les “hard link unix” pour :
- Éviter de dupliquer inutilement les fichiers.
- Faciliter la restauration.
rsnapshot crée l’illusion de plusieurs sauvegardes complètes, alors qu’il n’y a sur le système de fichier que la première et les différences éventuelles apparues entre cette dernière et les suivantes. Il s’agit d’une méthode de sauvegarde différentielle.
Dans ce tuto nous allons vous expliquer comment mettre en place la sauvegarde différentielle sécurisée d’un répertoire d’une machine distante.
Prérequis: Configuration de SSH et des clefs
Vous devez pouvoir vous connecter aux machines auxquelles vous allez vous connecter sans mot de passe:
Tout d’abord, il faut configurer ssh et importer la clef du serveur distant.
Je vais procéder comme dans ce tuto
Testez:
root@nas:~# ssh -p 10122 vanille Linux vanille.zehome.org 2.6.32-5-amd64 #1 SMP Tue Jun 14 09:42:28 UTC 2011 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Aug 11 08:07:48 2011 from nas.zehome.org root@vanille:~#
Installation de rsnapshot
root@nas:~# apt-get install rsnapshot
Qui vous installera par la même occasion Rsync…
Sauvegarde du fichier de configuration:
root@nas:~# cp /etc/rsnapshot.conf /etc/rsnapshot.conf.sos
Configuration
root@nas:~# nano /etc/rsnapshot.conf
Attention les espaces dans le fichier de configuration sont des tabulations…
Emplacement des sauvegardes
Par défaut les sauvegardes sont placées dans /var/cache/rsnapshot/ Si ce n’est pas ce que vous souhaitez, changer la destination:
########################### # SNAPSHOT ROOT DIRECTORY # ########################### # All snapshots will be stored under this root directory. # #snapshot_root /var/cache/rsnapshot/ snapshot_root /mnt/sdd1/rsnapshot/
Rotations
Nous dé-commentons les sauvegardes mensuelles. Les numéros représentent la fréquence des sauvegardes, ce qui nous donne:
interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3
- 6 sauvegardes horaires.
- 7 sauvegardes quotidiennes.
- 4 sauvegardes hebdomadaires.
- 3 sauvegardes mensuelles.
Activer SSH
... ################################# # EXTERNAL PROGRAM DEPENDENCIES # ################################# ... # Uncomment this to enable remote ssh backups over rsync. # cmd_ssh /usr/bin/ssh ... ############################################ # GLOBAL OPTIONS # # All are optional, with sensible defaults # ############################################ ... # ssh has no args passed by default, but you can specify some here. # ssh_args -p 10122 -o BatchMode=yes ...
Définition des sauvegardes
Nous commentons les sauvegardes par défaut:
... ############################### ### BACKUP POINTS / SCRIPTS ### ############################### # LOCALHOST #backup /home/ localhost/ #backup /etc/ localhost/ #backup /usr/local/ localhost/ ...
Et nous créons nos sauvegardes personnalisées…
... backup root@vanille:/etc/ vanille.zehome.org/ ...
Vérification de la configuration
Il existe une option de vérification du fichier de configuration:
root@nas:~# rsnapshot configtest Syntax OK
Lancez une sauvegarde en mode test pour une dernière vérification:
root@nas:~# rsnapshot -t hourly echo 5535 > /var/run/rsnapshot.pid mkdir -m 0755 -p /mnt/sdd1/rsnapshot/hourly.0/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ --rsh="/usr/bin/ssh -p 10122 -o BatchMode=yes" root@vanille:/etc \ /mnt/sdd1/rsnapshot/hourly.0/vanille.zehome.org/ touch /mnt/sdd1/rsnapshot/hourly.0/
Lancez la première sauvegarde:
root@nas:~# rsnapshot hourly
Recommencez plusieurs fois la sauvegarde journalière, vous aurez alors bien vos 6 sauvegardes horaires:
root@nas:~# vdir /mnt/sdd1/rsnapshot total 0 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.0 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.1 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.2 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.3 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.4 drwxr-xr-x 1 root root 36 11 août 09:12 hourly.5
Par défaut le “logging” se fait dans /var/log/syslog:
root@nas:~# cat /var/log/syslog | grep rsnapshot Aug 11 10:02:11 nas rsnapshot[5542]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:14 nas rsnapshot[5552]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:16 nas rsnapshot[5561]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:18 nas rsnapshot[5570]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:21 nas rsnapshot[5579]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:23 nas rsnapshot[5588]: /usr/bin/rsnapshot hourly: completed successfully Aug 11 10:02:25 nas rsnapshot[5598]: /usr/bin/rsnapshot hourly: completed successfully
root@nas:~# rsnapshot du 15M /mnt/sdd1/rsnapshot/hourly.0/ 0 /mnt/sdd1/rsnapshot/hourly.1/ 0 /mnt/sdd1/rsnapshot/hourly.2/ 0 /mnt/sdd1/rsnapshot/hourly.3/ 0 /mnt/sdd1/rsnapshot/hourly.4/ 0 /mnt/sdd1/rsnapshot/hourly.5/ 15M total
Tâche Cron
Activez (en dé-commentant les lignes) les sauvegardes dans votre cron:
# This is a sample cron file for rsnapshot. # The values used correspond to the examples in /etc/rsnapshot.conf. # There you can also set the backup points and many other things. # # To activate this cron file you have to uncomment the lines below. # Feel free to adapt it to your needs. 0 */4 * * * root /usr/bin/rsnapshot hourly 30 3 * * * root /usr/bin/rsnapshot daily 0 3 * * 1 root /usr/bin/rsnapshot weekly 30 2 1 * * root /usr/bin/rsnapshot monthly
Modifiez les horaires à votre convenance…
Sauvegarde d’un système complet
Si vous prévoyez de sauvegarder une machine entière, mettez en place un fichier d’exclusion afin d’éviter les fichiers inutiles:
root@nas:~# nano /etc/rsnapshot.conf
... ############################################ # GLOBAL OPTIONS # # All are optional, with sensible defaults # ############################################ ... exclude_file /mnt/sdd1/rsnapshot/exclude_file.txt ... ############################### ### BACKUP POINTS / SCRIPTS ### ############################### ... backup root@vanille:/ vanille.zehome.org/
nano /mnt/sdd1/rsnapshot/exclude_file.txt
A adapter à vos besoins évidemment… Voir le man de Rsync pour la syntaxe.
### Répertoires temporaires ### tmp ### + tmp/ - **/tmp/** + /tmpfs/ - /tmpfs/** ### Temporaires ### + /proc/ - /proc/** + /mnt/ - /mnt/** + /cdrom/ - /cdrom/** + /sys/ - /sys/** ### cache ### # mozilla + Cache/ - **/Cache/** # ccache.samba.org + ccache/ - **/ccache/** + .ccache/ - **/.ccache/** # others + cache/ - **/cache/** + xover-cache/ - **/xover-cache/** ### obj ### # kernel build - usr/src/**.o # special library .o (may be RH specific?) + usr/*/lib/**.o + usr/lib/**.o # all others - *.o ### backup ### - *~ + /var/backups/ ### rsnapshot ### + /var/snapshots/ - /var/snapshots/**
La première sauvegarde va prendre un long moment…