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 :
Gestion intelligente des données minimisant l'utilisation des disques et du réseau. Les fichiers identiques de différents backups sont liés par des "hardlinks"
La compression (optionnelle) réduit la taille des données sauvegardées.
Une puissante interface multilangues http/cgi utilisateur permet aux administrateurs de voir les fichiers de logs, de configurations, l'état du système et permet aux utilisateurs de démarrer une nouvelle sauvegarde, de l'annuler, de la parcourir et de recharger les donnéees sauvegardées très rapidement.
Aucuns logiciels client est nécessaire. Les clients Windows sont connectés via smb ou rsync(rsyncd/cygwin). Pour les clients unix et linux on peut utiliser rsync or tar (via ssh/rsh/nfs)
Restauration flexible: un fichier peut être téléchargé à partir de l'interface web. Des archives compressées en Zip ou Tar avec les fichiers/répertoires sélectionnées peuvent également être téléchargés à partir de l'interface.
BackupPC est adapté aux environnements qui évolue rapidement, quand les portables sont peu souvent connectés et utilisent des adresses dynamiques(DHCP).
Configuration du serveur possible pour le nombre de sauvegardes en parallèle.
et beaucoup d'autres à décourvrir dans le manuel officiel..
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.
BackupPC s'installe uniquement sur une machine sous *nix
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.
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
./configure --prefix=/backup/apache ./configure --with-mpm=worker
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
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 :
$apache le root de l'installation d'apache;
$backup le root des fichiers data de BackupPC
$backup-bin le repertoire contenant les binaires de BackupPC
$backup-user est l'utilisateur qui lance les processes Backup et Apache
Dans la pratique l'arborescence utilisée est la suivante:
/backup est monté sur un lvm
$apache /backup/apache
$backup est /backup/data
$backup-bin est /backup/install
Le répertoire /backup appartient à $backup-user
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> |
use Apache2 (); use lib qw(/srv/www/perl); use ModPerl::Registry (); 1; |
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 |
AuthUserFile $backup/conf/passwd AuthType basic AuthName "access" require valid-user |
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 :
$Conf{WakeupSchedule} = [1..23]; Heures auxquelles le serveur se réveille pour vérifier si il y a des taches à effectuer sur les clients.
$Conf{MaxBackups} = 4; Nombre de sauvegarde maximum concurrentes
$Conf{MaxUserBackups} = 4; Idem mais sur demande des utilisateurs
$Conf{MaxPendingCmds} = 10; Nombre de commandes maximum à programmer
$Conf{DHCPAddressRanges} = []; Permet de specifier des plages d'IP dynamique sur lesquelles le serveur à des clients configuré en dhcp.
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
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;
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];
BackupPC test via la commande ping toutes les heures si une machine est accessible.
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';
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.
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.
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%
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
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
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
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