BACKUPPC http://sourceforge.net/projects/backuppc/

Présentation

BackupPC est un produit mature qui profite d'une documentation très complète, le support via les mailing-listes et les newsgroups est efficace. Ce document s'appuie largement sur la documentation livrée avec BackupPC qui permet à tout néophyte d'installer un serveur BackupPC : documentation en ligne

Les principales caractéristiques de BackupPC sont :

Dans une première partie nous allons détailler l'installation du logiciel, cette dernière est très simple et je vous invite à passer directement à la présentation de l'interface graphique.

Installation

BackupPC s'installe uniquement sur une machine sous *nix

Création de l'espace disque

Pour séparer les logiciels de sauvegardes du système nous créons une nouvelle partition dédiée : $backup. L'utilisation d'un système Raid et/ou LVM est conseillé afin de résister au crash d'un disque dur et de permettre l'ajout d'espace supplémentaire facilement.

Installation du serveur Apache et des utilitaires

Prérequis :

  • perl supérieure à 5.6 avec les modules Compress::Zlib, Archive::Zip et File::RsyncP (perl -MCPAN -e shell;install $module)

  • smbclient pour accéder aux clients windows

  • nmblookup si on a des clients avec des IP variables (dhcp) pour obtenir l'IP d'une machine à partir de son nom NetBios.

  • tar > 1.13.7

  • rsync > 2.5.5

Nous avons utilisé Apache 2.0.x :

  • ./configure --prefix=/backup/apache ./configure --with-mpm=worker

et Mod_Perl 2.0 :

  • En tant que $backupuser

  • tar xvfz mod_perl-2.0-current.tar.gz

  • perl Makefile.PL MP_AP_PREFIX=/backup/apache MP_APXS=/backup/apache/bin/apxs MP_INST_APACHE2=1

  • make && make test && make install

  • le reste de la configuration se fera avec celle d'apache

Installation de BackupPC

Téléchargez la dernière archive disponible sur sourceforge-backuppc, décompressez l'archive et executez le script de configuration :
perl configure.pl

On renseigne l'installation sur les répertoires, dans la suite du document on définit :

Dans la pratique l'arborescence utilisée est la suivante:

Configuration d'Apache

Dans le fichier httpd.conf on effectue les modifications suivantes afin de permettre au cgi de backupPC d'utiliser mod_perl.
ScriptAlias /cgi-bin/ "$backup/apache/cgi-bin/"
LoadModule perl_module modules/mod_perl.so
PerlModule Apache2
PerlRequire "/backup/apache/conf/startup.pl"
<Directory $backup/apache/cgi-bin/>
        SetHandler perl-script
        PerlResponseHandler ModPerl::Registry
       	PerlOptions +ParseHeaders
        Options +ExecCGI
        Order deny,allow
        Deny from all
        Allow from 192.168.0
        AuthName "Backup Admin"
        AuthType Basic
        AuthUserFile /path/to/user_file
        Require valid-user
	AllowOverride Indexes AuthConfig
</Directory>
Avec startup.pl :
use Apache2 ();
use lib qw(/srv/www/perl);
use ModPerl::Registry ();
1;
Pour le cgi lui-meme:
chmod u-s $apache/cgi-bin/BackupPC_Admin

On va authentifier les utilisateurs définits dans le fichier host (description dans la section "Ajout d'un client") en spécifiant leur mot de passe dans le fichier $backup/data/conf/passwd: on crée le fichier $backup/conf/passwd :
htpasswd -c $backup/conf/passwd user1
et dans le repertoire cgi-bin on crée le fichier .htaccess suivant :
AuthUserFile $backup/conf/passwd
AuthType basic
AuthName "access"
require valid-user

Configuration du serveur

Le fichier de configuration du serveur est $backup/conf/config.pl; les variables peuvent être redéfinies en placant une copie de ce fichier dans le répertoire du client : $backup/data/pc/client/

Le fichier original contient pour chaque variable une description, une description plus complète est dans la documentation officielle en html.

Voici les principales variables concernant le serveur :

Ajout d'un client

Pour ajouter un client :

On ajoute une ligne dans le fichier $backup/conf/hosts avec :

nom-de-la-machine dhcp nom-de-l-utilisateur autres-utilisateurs

Le nom de la machine peut etre une adresse IP, une adresse complète ou un nom netbios. Dhcp est mis à 1 si on doit rechercher le client sur un sous reseau, si le client peut etre identifié par son nom netbios il n'est pas nécessaire de mettre la valeur à 1. Le premier utilisateur recevra les notifications par mail , les autres utilisateurs (séparé par des "," sans espace) auront accès aux données sauvegardées et pourrons demander une sauvegarde.

Les variables du fichier $backup/conf/config.pl peuvent être redéfinies pour chaque client, l'idée est de créer quelques configurations client type: windows_smb windows_rsync linux_rsync

Gestion du nombre et de la fréquence des sauvegardes:

Les périodes sont en jours.

Temps entre deux sauvegardes complètes :

  • $Conf{FullPeriod} = 6.97; si cette valeur est placée à "-1" les sauvegardes ne sont effectuées que sur demande de l'utilisateur; si cette valeur est "-2" les sauvegardes sont désactivées.

  • $Conf{IncrPeriod} = 0.97; période entre deux backup incrémentaux.

  • $Conf{FullKeepCnt} = 1; nombre minimal de backup complet qui n'ont pas dépassé $Conf{FullAgeMax} jours à conserver sur le disque.

  • $Conf{FullKeepCntMin} = 1; nombre minimal absolu de sauvegardes complètes à conserver

  • $Conf{FullAgeMax} = 60; après ce nombre de jours les sauvegardes complètes sont effacées.

  • De la même facon nous définissons pour les sauvegardes incrémentales :

    • $Conf{IncrKeepCnt} = 6

    • $Conf{IncrKeepCntMin} = 1;

    • $Conf{IncrAgeMax} = 30;

Optimisation des heures de sauvegardes:

BackupPC définit des heures "Blackout" où il sauvegarde un client seulement si ce client est habituellement indisponible durant les heures "creuses":

  • $Conf{BlackoutHourBegin} = 7.0;

  • $Conf{BlackoutHourEnd} = 19.5;

  • $Conf{BlackoutWeekDays} = [1, 2, 3, 4, 5];

Dans cet exemple ces périodes sont les jours de la semaine entre 7h et 19h30. Lorsqu'un client est ajouté il va etre sauvegardé sans se soucier de ces horaires; par contre si ce client répond régulièrement au ping "$Conf{BlackoutGoodCnt}=7;" cela indique que le client est connecté en permanence et qu'il est préférable de le sauvegarder en dehors des heures de travail "Blackout". Par contre si le client ne répond pas à $Conf{BlackoutBadPingLimit} = 3 successifs il sera sauvegardé sans se soucier des heures optimales.

BackupPC test via la commande ping toutes les heures si une machine est accessible.

Paramètres de connections aux clients

Windows smbclient

Pour un client smb il faut renseigner les variables suivantes :

  • $Conf{SmbShareName} = 'C$'; ou de la forme ['c', 'd'];

  • $Conf{SmbShareUserName} = 'utilisateur';

  • $Conf{SmbSharePasswd} = 'motdepasse';

  • $Conf{BackupFilesOnly} = undef OU $Conf{BackupFilesExclude} = undef;

  • $Conf{XferMethod} = 'smb';

Pour tester la connection on peut parcourir le répertoire partagé $folder avec la commande :
 smbclient \\\\$client\\$folder -U $user
 

Du coté client on veillera à ce que l'utilisateur spécifié ait les droits en lecture sur les répertoires et fichiers.

Windows rsyncd-cygwin

Il est plus efficace pour les clients windows d'utiliser un daemon rsyncd; l'installation comme la configuration sont aisées : sourceforge-rsyncd pour windows

On configure sur le client (rsyncd) les modules (répertoires) que l'on désire sauvegarder. L'utilisation de cygwin/rsyncd avec cygwin/sshd n'a pas été testée.

Unix rsync-ssh

Exemple : sauvegarde des fichiers "log" d'un serveur.

Pour permettre au serveur de backup son authentification sur le serveur nous allons copier sa clef public ssh (keygen -t rsa) dans /root/.ssh/authorized_keys.

Unix tar

Interface graphique

Etat du serveur

Cette page d'acceuil nous informe sur l'état du serveur, sont reportés ici:

  • Les sauvegardes en cours

  • Les echecs de sauvegardes

  • la taille du système : 33.50Go, 87000 fichiers et 4300 repertoires

  • L'espace libre sur les disques : 67%

Figure 1. Etat du serveur

Etat des clients

L'état de chaque client est résumé ici:

  • Le nom du client

  • L'email de l'utilisateur

  • Le nombre et la taille des sauvegardes complètes

  • Le nombre et la taille des sauvegardes incrémentales

Figure 2. Etat des clients

Accès au client

En cliquant sur le nom du client dans la page précedente on obtient les infos suivante:

Etat complet d'un client:

  • Description des sauvegardes réalisé et accès à ces sauvegardes en cliquant dessus

  • Log des transferts

Figure 3. Etat des clients

Accès aux fichiers

En cliquant sur une des sauvegardes (ex:188) on obtient cette fenetre qui nous permet de naviguer dans la sauvegarde et de récupérer les différentes données

Figure 4. Sauvegarde 188

Restoration

Après avoir sélectionné les fichiers désirés, le serveur nous propose trois solutions pour récupérer les données

Types de transfert:

  • restoration par la méthode définit dnas le fichier de configuration du client, les fichiers selectionné seront directement replacé sur le client.

  • Téléchargement des fichiers compressés au format Zip

  • Téléchargement des fichiers au format tar

Figure 5. options de restoration

Outils

Extraction de BackupPC d'une archive : BackupPC_tarCreate

 BackupPC_tarCreate -t -h rosco.coriolis-legi.org -n 186 -s '/' /* > /BACKUP/rosco.tar

Dans cet exemple on extrait la 186ème sauvegarde de l'hôte rosco.coriolis-legi.org dans le fichier /BACKUP/rosco.tar