Cette fois, je vais parler sauvegarde avec le logiciel burp. Je vous laisse vous référer au site officiel pour en apprendre plus sur les raisons du démarrage de ce projet par Graham Keeling. Burp est basé sur librsync, ce qui lui permet d’être très efficace sur les sauvegardes différentielles.

Des points intéressants de ce logiciel sont que le client fonctionne sur linux/mac/windows, qu’il est très simple à mettre en place. Par exemple, le client et le serveur sont dans le même binaire, il y a très peu de dépendances etc.

Autre point important pour mon cas d’usage qui comprend des ordinateurs portables qui ne sont pas toujours présents sur le réseau: c’est le client qui vient demander au serveur s’il est temps pour lui de se sauvegarder.

Concrètement, il s’agit d’un cron qui se lance régulierement pour interroger le serveur. Selon la politique de sauvegarde définie et la date de la dernière sauvegarde, le serveur autorise la sauvegarde ou non. Le script de calcul coté serveur est bien sur configurable et modifiable.

Je vais rapidement dérouler l’installation et la sauvegarde du premier client sur Debian.

Installation du server et du client :
apt install burp

Sur le serveur, autoriser le démon à se lancer en mettant RUN=yes dans /etc/default/burp

La configuration du serveur se fait dans /etc/burp/burp-server.conf
L’ajout d’un client se passe simplement, il faut une configuration sur le serveur et une sur le client avec un mot de passe commun.

Exemple sur le serveur dans /etc/burp/clientconfdir/client_test
password = passbkp

Exemple sur le client dans /etc/burp/burp.conf

mode = client 
port = 4971
server = 10.0.0.1
password = passbkp
cname = client_test

Bien sur il ne faut pas oublier de modifier le reste du fichier pour limiter le débit si necessaire et ajuster les inclusions et exclusions.

A la première communication, le serveur va verifier le mot de passe puis signer le certificat X509 généré par le client, cela servira à chiffrer les communications par la suite.

un rapide burp -a b pour lancer la premiere sauvegarde, puis l’ajout de burp -a t en cron et c’est fini !

Après la première sauvegarde, cela va assez vite car burp inventorie les metadonnées des fichiers à sauvegarder puis les compare aux métadonnées de la derniere sauvegarde du serveur.
Cela lui permet de ne sauvegarder que les fichiers ajoutés et pour les fichiers modifiés, seuls les blocs modifiés sont transmis.

Une interface de visualisation est disponible depuis le serveur :
burp -c /etc/burp/burp-server.conf -a s

Ziirish à lancé un projet d’interface web de monitoring et de configuration pour burp. Ça se passe ici pour ceux qui veulent tester : https://git.ziirish.me/ziirish/burp-ui

Au moment de tester les restaurations, c’est amusant de voir que les regex sont utilisées pour selectioner les fichiers ou repertoires à remonter. C’est vraiment pratique.

Exemple pour restaurer un fichier depuis le backup numéro 1 dans le repertoire /tmp/
burp -a r -b 1 -r fichier$ -d /tmp/

C’est KISS non ? 🙂

En bonus voici les infos qu’on trouve pour résumer l’état d’un backup.

--------------------------------------------------------------------------------<
Start time: 2015-09-11 19:27:01
End time: 2015-09-11 19:28:08
Time taken: 01:07
                         New   Changed Unchanged   Deleted     Total |  Scanned
                   ------------------------------------------------------------
            Files:        15        59         0         0        74 |    48610
        Meta data:         0         0         0         0         0 |        1
      Directories:         0         0         0         0         0 |     6002
       Soft links:         0         0         0         0         0 |       56
    Special files:         0         0         0         0         0 |        2
      Grand total:        15        59         0         0        74 |    54671
                   ------------------------------------------------------------

 Warnings: 1

 Bytes estimated: 213898414380 (199.21 GB)  
 Bytes in backup: 110569423 (105.45 MB)  
 Bytes received: 0  
 Bytes sent: 23859722 (22.75 MB)  
--------------------------------------------------------------------------------