Table des matières

BackupPC

Le service BackupPC gère les sauvegardes de la machines. Il s'occupe de lancer périodiquement les sauvegardes complètes ou incrémentale ainsi que les restaurations à la demande. Il maintient par ailleurs sont pool de données qu'il rend accessible au travers de son interface web qui permet aussi le déclenchement de restauration.

Configuration

La configuration du service est stockée dans le dossier /etc/backuppc/*. Le fichier config.pl contient la configuration générale du service. Ce fichier contient également la configuration par défaut de la sauvegarde des machines gérées. Chaque machine dispose par ailleurs d'un fichier de configuration et qui porte son nom suffixer par “*.pl*”. Les variables de configuration définies dans ces fichiers remplacent les valeurs par défaut définies dans la configuration générale.

Tout les fichiers de configuration de BackupPC doivent respecter la syntaxe du langage Perl. Par ailleurs, tous ces fichiers doivent appartenir à l'utilisateur backuppc et au groupe www-data. Le propriétaire de ces fichiers doit y avoir accès en lecture et en écriture. Le groupe propriétaire, quand à lui, doit y avoir accès en lecture uniquement.

Le fichier hosts contient la déclaration des machines clientes ainsi que les personnes qui auront accès aux sauvegardes de ces machines. Le propriétaire des machines doit systématiquement être backuppc pour que les alertes soient reçues par les administrateurs du système.

L'interface web de BackupPC est accessible en générale au travers du service HTTP Apache. La configuration du service HTTP Apache se situe dans le dossier /etc/apache2 et plus particulièrement dans le fichier /etc/apache2/backuppc. C'est un lien logique vers le fichier /etc/backuppc/apache.conf.

L'authentification des utilisateurs se connectant à l'interface de BackupPC est confié au serveur web.

Un bug ouvert chez Debian sur le paquet libarchive-zip-perl empêche actuellement le téléchargement d'une archive zip compressée depuis l'interface. Il s'agit du bug 600848. Un patch a été proposé mais une solution moins intrusive est en attente.

Données exploitées

BackupPC exploite ses données de manière autonome et les rend accessibles au travers d'outils. Il est cependant intéressant de savoir où sont stockés ces données. Le répertoire les contenant toutes est /var/lib/backuppc dans lequel on retrouve les sous-répertoires suivant :

Les données sauvegardées stockées dans le dossier pc ne peuvent pas être accédées directement. Pour cela, il est en outre possible d'utiliser un montage d'un système de fichiers virtuelles permettant l'accès directe à ces fichiers. Pour plus d'information, ce référer à la procédure correspondante.

Procédures

Présentation de l'interface web

La page d'accueil vous présente l'état global du serveur avec, entre autre, les travaux actuellement en cours, les échecs pour lesquels l'intervention d'un administrateur est nécessaire et des graphiques de l'espace disque occupé par les sauvegardes.

Plan du site

Ajouter une machine à sauvegarder

Côté client

Machine GNU Linux

Via rsyncd :

La méthode rsyncd est la plus adaptée pour une machine tournant sous un système d'exploitation GNU Linux. Cette méthode requiert la présence du service rsyncd sur la machine à sauvegarder avec un partage permettant l'accès à toutes les données.

Cette méthode ne comporte aucun cryptage de données. Pour la sauvegarde d'une machine au travers d'un réseau sensible (comme Internet), il est recommandé d'utiliser la méthode rsync + ssh.
Cette méthode requiert que le paquet libfile-rsyncp-perl soit installé sur le serveur de sauvegarde.

Exemple de mise en place sous Debian GNU Linux :

Variables utilisées dans la configuration :

Procédure :

Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :

$Conf{XferMethod} = 'rsyncd';
$Conf{RsyncShareName} = [ 'slash' ];
$Conf{RsyncdUserName} = 'backup';
$Conf{RsyncdPasswd} = '[mot de passe]';

Via rsync + ssh :

La méthode rsync + ssh est la plus adaptée pour une machine tournant sous un système d'exploitation GNU Linux et dont la sauvegarde devra être effectuée au travers un réseau sensible tel que Internet. Cette méthode requiert la présence du service ssh sur la machine à sauvegarder et du programme rsync. De plus, l'authentification des connexions ssh de BackupPC sur la machine devront se faire grâce au mécanisme d'authentification par clé. La clé ssh de l'utilisateur backuppc du serveur de sauvegarde devra donc être ajoutée aux clés autorisés de l'utilisateur POSIX de la machine utilisé par BackupPC pour se connecter.

Exemple de mise en place sous Debian GNU Linux :

Variable utiliser dans la configuration :

Procédure :

Le fichier contenant la liste des clé SSH autorisées à se connecter est par défaut $HOME/.ssh/authorized_keys. Ceci est défini dans la configuration du service SSH par la directive AuthorizedKeysFile qui vaut alors %h/.ssh/authorized_keys.

Le service est ainsi configuré. Les directives de configuration de BackupPC seront alors au minimum :

$Conf{XferMethod} = 'rsync';
$Conf{RsyncClientPath} = '/usr/bin/rsync';
$Conf{RsyncClientCmd} = '$sshPath -l  [nom utilisateur] $rsyncPath $argList+';
$Conf{RsyncClientRestoreCmd} = '$sshPath -l [nom utilisateur] \
$host $rsyncPath $argList+';
$Conf{RsyncShareName} = [ '/' ];
$Conf{BackupFilesExclude} = {
  '*' => [
    '/proc',
    '/sys',
    '/dev'
  ]
};
Partage NFS (via NFS + tar)

La méthode NFS + tar est la plus adaptée pour la sauvegarde d'un partage NFS d'une machine ne permettant pas la mise en place d'une sauvegarde via rsync en local (Exemple : appliance propriétaire). Le principe consiste ici à faire un montage de ce partage NFS sur la machine exécutant BackupPC et de faire une sauvegarde via l'outil tar en local.

Pour cela, il faut commencer par mettre en place le montage du partage NFS. Par convention, celui-ci sera effectué dans le dossier /mnt/[hostname]/[sharename] :

Les directives de configuration de BackupPC seront alors au minimum :

$Conf{XferMethod} = 'tar';
$Conf{TarShareName} = ['[sharename]'];
$Conf{TarClientCmd} = 'sudo $tarPath -c -v -f - -C /mnt/$host/$shareName --totals';
$Conf{TarClientRestoreCmd} = 'sudo $tarPath -x -p --numeric-owner --same-owner -v -f -' 
                   . ' -C /mnt/$host/$shareName';
Il peut être nécessaire d'endosser les droits root pour permettre de parcourir et d'accéder à l'ensemble des données du partage. Pour cela :
  • Créer le fichier /etc/sudoers.d/backuppc :
    backuppc	ALL=NOPASSWD:/bin/tar
  • Corriger les droits du fichier précédemment créé :
    chmod 0440 /etc/sudoers.d/backuppc
  • Ajouter sudo en préfixe des directives BackupPC TarClientCmd et TarClientRestoreCmd :
    sudo $tarPath [...]
Machine Microsoft Windows

La méthode smb est la plus adaptée pour une machine tournant sous un système d'exploitation Microsoft Windows. Il vous suffit de paramétrer le partage du dossier contenant les fichiers à sauvegarder. Il est éventuellement possible d'utiliser les partages systèmes comme C$ accessible uniquement en s'authentifiant comme un utilisateur ayant les droits administrateur.

Pour que la restauration soit possible, les données doivent être accessible en lecture et en écriture lors de la connexion.

Les directives de configuration de BackupPC seront alors au minimum :

$Conf{XferMethod} = 'smb';
$Conf{SmbShareName} = [ '[nom du partage]' ];
$Conf{SmbShareUserName} = '[nom utilisateur de connexion]';
$Conf{SmbSharePasswd} = '[mot de passe de connexion]';
NAS Synology

La méthode rsync + ssh est la plus adaptée pour un NAS Synology. Pour permettre la connexion de BackupPC au NAS, il vous faut :

Le reste de procédure est équivalent à celle pour une machine GNU/Linux via la méthode rsync + ssh. Les volumes de données du NAS se trouvent dans /volumeX. On pourra sauvegarder spécifiquement certains volumes/partages via le paramètre $Conf{BackupFilesOnly}, par exemple :

$Conf{BackupFilesOnly} = ['/volume1', '/volume2/partage1'];
Le compte admin doit être actif pour que les sauvegardes via le compte root UNIX fonctionne !

Côté serveur

En ligne de commande

Pour ajouter une machine à sauvegarder, il faut :

Afin de centraliser les message d'alertes, le propriétaire des machines est systématiquement backuppc. Le mail de cette utilisateur est en réalité un alias défini dans le fichier /etc/aliases.
Via l'interface web

L'ajout d'une machine peut également être fait via l'interface web par les administrateurs de BackupPC uniquement. Cette interface web peut être très pratique pour découvrir les paramètres de configuration utilisable car pour chaque directive, l'interface vous donne facilement accès à sa documentation directement accessible en ligne.

Pour ajouter une machine depuis l'interface, il faudra :

Modifier la configuration d'une machine

La modification de la configuration d'une machine est directement possible depuis l'interface web de BackupPC. Il est également possible d'éditer le fichier de configuration de la machine manuellement.

Depuis l'interface web :

L'interface est composée de différent onglets regroupant les directives de configuration par thème. En cliquant sur le nom d'une directive vous pouvez accéder directement à sa documentation. Une fois toutes vos modifications apporté, cliquer sur le bouton Sauvegarder en haut de la page.

Édition manuelle du fichier de configuration de la machine :

Déclencher la sauvegarde d'une machine

Les sauvegardes se déclenche depuis l'interface web de BackupPc.

La sauvegarde est alors lancée et vous revenez sur la page de la machine. Vous pouvez suivre l'état de la machine en cliquant sur le lien Fichier journal dans le menu de gauche.

Restauration et téléchargement des données sauvegardées

L'interface web offre une interface de navigation dans les données sauvegardés qui permet leur téléchargement ou leur restauration. Pour accéder à cette interface, il faut :

Par défaut, vous naviguez dans les données de la dernière sauvegarde disponible pour cette machine. Un menu déroulant en haut permet éventuellement de choisir une sauvegarde plus ancienne. La navigation se fait à la manière d'un explorateur de fichiers.

Pour télécharger ou restaurer des données, il suffit de les sélectionner dans l'explorateur et de cliquer sur le bouton Restaurer les fichiers sélectionnés en haut ou en bas de la page. Une page vous permet ensuite de choisir quelques méthodes vous souhaitez utiliser pour récupérer ces données :

Vous devez ici cliquer sur le bouton correspondant à la méthode que vous désirez. Dans le cas de la restauration directe, une page vous demandera de confirmer l'action.

Dans le cas de bases de données ou d'annuaires LDAP, il faut restaurer un fichier dump pour être certain de la cohérence des données et non le répertoire de la base de données concernée.

Restauration complète d'une machine Linux via rsync

Cette restauration n'est possible que si vous avez sauvegardé tout les fichiers et dossiers du serveur et que celui-ci est sauvegardé en utilisant la méthode rsyncd. Pour restaurer une machine Linux complètement, il faudra alors :

Attention, dans le cas de bases de données (ou annuaire LDAP), il peut être nécessaire suite au redémarrage de restaurer un dump des bases.

Restauration complète d'une machine Linux via rsync + ssh

Cette restauration n'est possible que si vous avez sauvegardé tout les fichiers et dossiers du serveur et que celui-ci est sauvegarder en utilisant la méthode rsync via ssh. Pour restaurer une machine Linux complètement, il faudra alors :

Attention, dans le cas de bases de données (ou annuaire LDAP), il peut être nécessaire suite au redémarrage de restaurer un dump des bases.

Supprimer une sauvegarde d'une machine

Il existe un script pour cela BackupPcDeleteBackups (téléchargeable ici). Il faut l'installé en complément sur le serveur. Il permet de supprimé une ou plusieurs sauvegardes d'une machine. Il est recommandé de l'installer dans /usr/local/bin/BackupPcDeleteBackups.

Utilisation :

Usage: /usr/local/bin/BackupPcDeleteBackups [-c <client> [-d <backupnumber> -b <before data> -r [-f]] | [-l]] | [-n]
  -c <client> - client machine for which the backup was made
  -d <number> - number of Backup which should be deleted
  -b <date>   - delete all backups before this date (YYYY-MM-DD)
  -r          - remove the entire client
  -f          - force to run Backuppc_nightly so the space got free afterwards
  -n          - only run Backuppc_nightly
  -l          - list the backups which made for <client>
  -n          - Just run BackupPC_nightly (even if no backups deleted)
  -h          - this help

Exemple d'utilisation :

ATTENTION Si vous supprimez une sauvegarde complète d'une machine, toutes les sauvegardes incrémentales dépendantes le seront également.

Supprimer une machine

Le script BackupPcDeleteBackups installable en complément sur le serveur qui vous permet en premier lieu de supprimer une ou plusieurs sauvegardes d'une machine, vous permet également de faire cela. Il va pour vous :

Si vous souhaitez conserver une sauvegarde des informations de configuration concernant cette machine, pensez à le faire avant d'exécuter ce script.

Vous devez pour cela exécuter ce script de la manière suivante :

/usr/local/bin/BackupPcDeleteBackups -c <machine> -r

Trucs et astuces

Désactiver la sauvegarde d'un répertoire avec rysnc

Supprimer un ou plusieurs fichiers/dossiers dans les sauvegardes

cd /var/lib/backuppc/pc/[machine]/[id_backup]/
rm -fr [truc]
su - backuppc
/usr/share/backuppc/bin/BackupPC_nightly 0 255

Sauvegardes complètes uniquement les dimanches

Pour être certain que les sauvegardes complètes est lieu uniquement le dimanche, et du fait que BackupPC ne dispose pas d'une différenciation de période de blackout spécifique entre sauvegarde complète et sauvegarde incrémentale, il est nécessaire de contourner le fonctionnement normal de la manière suivante :

Le choix de la valeur -1 pour la périodicité des sauvegardes complètes pourrait être un choix tentant, cependant elle équivaut à une désactivation complète des sauvegardes de la machine, y compris pour les sauvegardes incrémentales. Ce choix peut convenir si on souhaite avoir que des sauvegardes complètes le dimanche et aucune sauvegarde incrémentale le reste du temps.

Export des dernières sauvegardes sur disques USB chiffrés

Voir : https://gogs.zionetrix.net/bn8/backuppcExportOnUsbDisk

Les graphiques ne sont pas affichés sur la page d'accueil

Il suffit d'installer manuellement le paquet Debian rrdtool. Il faudra également attendre qu'un job Nightly se termine pour que le fichier /var/lib/backuppc/log/pool.rrd soit créé et alimenté afin de permettre l'affichage des graphiques. Si vous ne voulez pas attendre, vous pouvez également utiliser la commande suivante :

~# /usr/bin/rrdtool create /var/lib/backuppc/log/pool.rrd --step 86400 DS:ckb:GAUGE:172800:0:U RRA:AVERAGE:0.5:1:1400
~# chown backuppc: /var/lib/backuppc/log/pool.rrd
~# chmod 640 /var/lib/backuppc/log/pool.rrd
La ligne rrdtool create est issu du fichier /usr/share/backuppc/bin/BackupPC (version 3.2.1). N’hésitez pas a vérifier que celle-ci n'est pas changé suite à une mise à jour.

Désactiver le ping sur une machine

Pour une machine ne répondant pas au ping, il est possible de le “désactiver” à l'aide du paramètre suivant :

$Conf{PingPath} = '/bin/echo';