Faire des sauvegardes incrémentales et automatique : Rsnapshot

Rsnapshot est un utilitaire de snapshot de système de fichiers basé sur rsync.
Rsnapshot facilite la réalisation d'instantanés périodiques de machines locales et de machines distantes par ssh.
Les fichiers peuvent être restaurés par les logins qui les possèdent, sans que le login root ne soit impliqué.
Une fois que vos sauvegardes sont configurées, elles peuvent se produire automatiquement sans mains humaines.
Et parce que rsnapshot ne conserve qu'un nombre fixe (mais configurable) d'instantanés, la quantité d'espace disque utilisée n'augmentera pas continuellement.
Il est entièrement écrit en perl sans dépendances de modules (perl, rsync, ssh, logger, cp, rm, logger, du).

Installation

sous Debian ou équivalent :

apt-get install rsnapshot

Avec les sources:

git clone http://github.com/rsnapshot/rsnapshot.git

Puis :

./autogen.sh
./configure --prefix=/usr/local/rsnapshot --sysconfdir=/usr/local/rsnapshot/etc --bindir=/usr/local/rsnapshot/bin --mandir=/usr/local/rsnapshot/man
make install

Voila, pour plus de détail sur les options possible d'installation (avec les sources), vous pouvez lire le fichier INSTALL.md.

Configuration

Dans une premier temps , nous allons faire une copie du fichier configuration par défautrsnapshot.conf.default, le chemin de ce fichier va dépendre de votre installation (dans mon cas /usr/local/rsnapshot/etc).

cp /usr/local/rsnapshot/etc/rsnapshot.conf.default /usr/local/rsnapshot/etc/rsnapshot.conf

Par défaut les sauvegardes sont placées dans /.rsnapshot, Si ce n'est pas ce que vous souhaitez, changez la destination :

#snapshot_root /.snapshots/
snapshot_root /<mon rep de backup>/

exemple :

snapshot_root /.backup

Les répertoires à sauvegarder :

Voici, un exemple de sauvegarde locale :

backup /etc/ /localhost/

Nous sauvegardons /etc/ vers <snapshot_root>/<retain>.0/localhost/etc/ en utilisant rsync sur le système de fichiers locale.

Quand j’écris <retain>, je fais référence à l'option du fichier de configuration. Pour vous aider je vous détail l'option : retain <Nom> <Nombre> <Nom> : désigne le nom de ce niveau de sauvegarde (par exemple: hourly, daily, …, également appelé «intervalle»). <Nombre> : est le nombre d'instantanés pour ce type d'intervalle qui sera retenu. La valeur de <Nom> sera la commande passée à rsnapshot pour effectuer ce type de sauvegarde. Exemple : retain daily 7 Pour cet exemple, chaque fois que cela se produit, les événements suivants se produiront cela : <Snapshot_root>/daily.6/ sera supprimé, s'il existe <Snapshot_root>/daily.{1,2,3,4,5} seront tous incrémentés de 1, s'ils existent <Snapshot_root>/daily.0/ sera copié sur <snapshot_root>/daily.1/ en utilisant des liens durs Les niveaux de sauvegarde doivent être spécifiés dans le fichier de configuration dans l'ordre, du plus fréquent au moins fréquent. La première entrée est celle qui sera synchronisée avec les points de sauvegarde. exemple de retain : retain daily 7 retain weekly 4

Voici, un exemple de sauvegarde distante :

backup root@ksh-linux.info:/etc/ ksh-linux.info/

Qui aura pour effet de sauvegarder le répertoire /etc du serveur ksh-linux.info dans le répertoire <snapshot_root>/<retain>.0/ksh-linux.info

Avant de faire ce genre de sauvegarde, vous aurez fabriqué une paire de clé RSA, pour ne pas saisir un mot de passe.

Pour les autres configurations possibles, vous pouvez regarder les exemples à la fin du fichier de configuration rsnapshot.conf.

Lorsque rsnapshot.conf contient vos paramètres, effectuez une vérification rapide pour plus de sérénité, juste pour vous assurer que tout est prêt :

rsnapshot configtest

Vous devriez obtenir le résultat Syntax OK, quand cela est obtenu, vous pouvez faire votre cron.
Voici, un exemple avec comme option retain les options suivantes :

retain daily 7
retain weekly 4

Le crontab qui suit :

10 23 * * * /usr/local/rsnapshot/bin/rsnapshot daily
50 23 * * 7 /usr/local/rsnapshot/bin/rsnapshot weekly

Bon, backup
sources : github.com, linux.die.net
N'hésitez pas à laisser un petit un commentaire.