logo chat

William Dodé - Informaticien indépendant

Snapy : backup incrémental

Backup incrémental a base de cp -al et rsync -aH

L'objectif de cet outil est de faire des sauvegardes quotidiennes stockées dans des répertoires nommés par la date du jour (yyyy-mm-dd).

snapy peut utiliser ssh pour accéder aux répertoires sources et cibles.

Attention!

Dans le cas d'une mauvaise utilisation snapy peut vous faire perdre vos données irrémédiablement ! Il est essentiel de bien comprendre son fonctionnement avant de l'utiliser.

L'option prune utilise la commande rm -r sur le répertoire cible.

Tous commentaires et suggestions bienvenues...

Backup

Pour ne pas occuper de la place inutilement, snapy effectue un cp -al du dernier backup vers un nouveau répertoire. L'option -a permet de préserver les propriétés des fichiers (droits, propriétaire...) et l'option -l permet de faire des liens hards plutôt que de créer des nouveaux fichiers. Ensuite rsync est utilisé pour ne mettre à jour que les fichiers qui ont changés (dans ce cas le lien hard est cassé).

Epuration

Ensuite, pour ne pas conserver indéfiniment toutes les sauvegardes snapy efface les plus anciennes suivant la configuration choisie.

snapy devrait être lancé quotidiennement, mais ce n'est pas indispensable, il va conserver un certain nombre de jours, mois et années quelque soit la fréquence de lancement. S'il est lancé plusieurs fois dans la même journée, la dernière sauvegarde est mise à jour tout simplement.

Configuration

La configuration se trouve dans un fichier à passer en parametre à snapy ou snapy.conf du répertoire en cours s'il existe.

Le fichier de configuration permet de gérer plusieurs backups, chacun se trouve configuré dans une section [backupXYZ].

Les options par défaut se trouvent dans la section [DEFAULT] (en majuscule).

Pour chaque section on retrouve les options suivantes :

Options de backup

  • sources : répertoires sources éventuellement sur plusieurs lignes (chaque ligne doit être indentée).
  • target : répertoire destination (/var/snapies)

Si ces deux paramètres ne sont pas renseignées, aucune sauvegarde n'est effectué (ce qui n'empêche pas une éventuelle épuration)

  • pre-snapy : script à lancer avant la sauvegarde
  • post-snapy : script à lancer après la sauvegarde

Si le script pre-snapy ne renvoi pas zéro la sauvegarde et l'épuration s'arrête pour ce backup.

Si ssh doit être utilisé pour la cible

  • target-host : machine cible (machine ou user@machine ou user:pass@machine)

Options rsync

Voir l'aide de rsync pour la liste et la documentation des options.

L'exécutable rsync peut être indiqué si besoin (pour les utilisateurs windows) avec l'option rsync-exe: c:/cwrsync/bin/rsync.

Chaque option rsync doit être indiquée sous la forme rsync--option, ou avec une seule lettre rsync-o.

Par exemple, les options conseillées sont:

rsync--archive:
rsync--hard-links:
rsync--verbose:
rsync--compress:
rsync--relative:
rsync--copy-unsafe-links:
rsync--delete:
rsync--delete-excluded:
rsync--exclude: fichier à exclure

Où l'équivalent abrégé:

rsync-a:
rsync-v:
...

Dernière possibilité:

rsync-: -a
 -v
 -z
...

Lorsqu'une option comprend plusieurs paramètres, il faut les mettre sur plusieurs lignes et les indenter (espace à gauche).

Si on veut utiliser plusieurs fois la même option il est indispensable d'utiliser cette syntaxe

rsync--exclude: premier
 --exclude
 deuxieme
 --exclude
 troisieme
 ...

Options ssh

Voir l'aide de ssh pour la liste et la documentation des options.

L'exécutable rsync peut être indiqué si besoin (pour les utilisateurs windows) avec l'option ssh-exe: c:/cwrsync/bin/ssh.

Comme pour rsync, les options doivent être indiquées sous la forme ssh-x où x est l'option.

Par exemple:

ssh-l: user
ssh-i: id_rsa

Epuration

L'épuration n'a lieu que si prune est à True et si l'éventuel script pre-prune et pre-snapy ont retourné zéro.

  • prune: True
  • days : Nombre de jours à conserver (7 par défaut)
  • months : Nombre de mois à conserver (12 par défaut)
  • years : Nombre d'années (5 par défaut)
  • pre-prune : Script à lancer avant prune
  • post-prune : Script à lancer après prune

Logging

Les informations sont envoyés à l'écran et enregistrés dans un fichier de log par jour de la forme snapy.log.2006-02-01 etc.. 10 jours sont conservés par défaut.

  • log-file (snapy.log par défaut) contient le nom du fichier de log
  • log-file-keep (10 par défaut) contient le nombre de fichiers de logs à conserver (1 par jour).
  • log-config permet de spécifier un fichier de configuration logging (voir doc python)
  • debug (false par défaut) permet d'afficher plus d'infos sur la sortie standard