Description

BackupPC est l'outil utilisé au ResEl pour faire des sauvegardes du contenu des serveurs.

Mise en place

BackupPC est un programme de gestion de sauvegardes performant et open source.

BackupPC est hébergé sur Padova. Il pousse une plateforme web à https://backuppc.resel.fr.

L'accès à BackupPC est contrôlé par le droit backuppc du LDAP.

Le fonctionnement de BackupPC est assez simple, il utilise rsync en backend, et procède, selon sa configuration, à des sauvegardes incrémentales ou complètes. Une sauvegarde incrémentale est une sauvegarde qui enregistre seulement les différences par rapport à la sauvegade précédente. Elles sont donc légères, mais détruites si l'on perd les sauvegardes d'avant.

Utilisation

Forcer la backup d'un serveur

On peut forcer la backup d'un serveur, par exemple avant d'effectuer une action sensible, en se connectant sur https://backuppc.resel.fr (connexion par compte ResEl Admin). Il faut choisir l'hôte dans le menu déroulant à gauche, puis sur la page de l'hôte, choisir l'action voulue entre la sauvegarde incrémentielle et la sauvegarde complète.

Explorez une sauvegarde

Lorsqu'on est sur la page d'un hôte, on peut commencer à explorez une sauvegarde en cliquant sur le lien dans la colonne des numéros de la sauvegarde. On peut dès lors naviguer dans l'arborescence des fichiers sauvegardés et les télécharger.

Configurer un nouveau serveur pour le backup.

Méthode facile, automatique et recommandée

La méthode recommandée est d'utiliser Ansible celle-ci permettra d'avoir une configuration uniforme sur tous les serveurs du ResEl.

Pour provisionner un serveur il faut utiliser le rôle backuppc.

À noter que ce rôle ne provisionne pas padova, mais uniquement le serveur à backupper. Pour la suite de la démarche, il faut continuer à la section Sur Padova.

Méthode manuelle

Ma méthode suivante est décrite au cas où, mais ne devrait pas être utilisée dans le cas général.

Sur la machine à sauvegarder

Il ne faut pas installer BackupPC sur cette machine. Ce n'est pas un client mais un serveur.

Vérifiez que la machine dispose de rsync et ionice :

apt install rsync schedutils

Créez un utilisateur backuppc sans mot de passe :

adduser --disabled-password backuppc

Permettez le de se connecter en ssh :

adduser backuppc sshusers

Donnez lui un peu plus de droit avec visudo, ajoutez :

backuppc        ALL=NOPASSWD: /usr/bin/nice -n 19 /usr/bin/rsync *, /usr/bin/rsync

Créez des dossiers pour le SSH et mettez-y les bons droits :

su backuppc
cd; mkdir .ssh;
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

Ajoutez au fichier /home/backuppc/.ssh/authorized_keys la clé de backuppc :

from="padova.adm.resel.fr" ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAyiYy9xX9VNA+jXyfRaHfPtHNl6AwHa9CRFyT7+atYRxBFF7dovNag5xyMF96Vb2Mm/5BmgIdog8QDjp0SiSlPvjJr2vVZrI5DYSPETAKgtEtc5vSoMab4YJFUrMb23a3qZ7ReXgTXVCMkRwootPwoY4fZr4DECYwBDABioi/BnQclqozf8Oi21+1OBQsictunjUgGy7DlFQf5q75QMGXi9zr0r3oT6Fg9/Rv+p4CemLkPrpLKGjhhosI3qWDXbGDoVn2z7RrWQ1QLh49XczvsupOhAE7ZV18vWwVwrvcdo/5IIAIuNAQJ1vg1KJ8llL/ge5u5bDexVHMzKtobjrzDQ== backuppc@padova

Sur Padova

Actuellement le provisionning de la machine du Padova n'est pas fait avec Ansible TODO.

Supposons que vous vouliez ajouter une machine au nom de cyric

Il faut tout d'abord éditer le fichier /etc/backuppc/hosts et ajouter la ligne suivante :

cyric 0       backup

Créez ensuite un fichier /etc/backuppc/cyric.pl en vous inspirant des fichiers déjà existants :

$Conf{BackupFilesOnly} = ['/'];

$Conf{BackupFilesExclude} = ['/cdrom', 
			     '/dev', 
			     '/floppy', 
			     '/lost+found', 
			     '/mnt', 
			     '/proc', 
			     '/sys', 
			     '/tmp', 
			     '/var/cache', 
			     '/var/run', 
			     '/var/spool/postfix', 
			     '/srv/www/eggdrop/logs', 
			     'lost+found'];

$Conf{RsyncShareName} = ['/'];

*Attention : *Il faut faire attention à la répartition des points de montage sur la machine à sauvegarder : il faut préciser dans la ligne $Conf{RsyncShareName} = ['/']; tous les points de montage à sauvegarder. Pour avoir la liste des points de montage, utiliser la commande lsblk

Il faut ensuite redémarrer le service BackupPC :

service backuppc restart

Il faut parfois ajouter à padova l'emprunte du serveur distant. Vous pouvez faire cela en vous connectant une première fois au serveur distant :

su backuppc
ssh cyric

Problèmes récurrents

Il arrive que parfois padova n'arrive pas à se connecter au serveur distant. Cela se traduit par l'erreur Unable to read 4 bytes dans l'interface web. Si cela se produit vérifiez bien que :

  • La bonne clé publique de backuppc est bien dans .ssh/authorized_keys
  • Droits : .ssh chmod 700, .ssh/authorized_keys chmod 600
  • La connexion est autorisée depuis le bon nom de domaine (si DNS présents !) et/ou adresse IP (from "padova.adm.resel.fr,172.22.2.5" dans authorized_keys par exemple)
  • L'utilisateur backuppc n'a pas de mot de passe (passwd -d backuppc pour le supprimer ; ou adduser --disabled-password à la création)
  • La connexion ssh se fait sans problème (par exemple, si ssh remarque que la clé de la machine n'est pas la bonne, ou n'est pas connu, il demandera interactivement d'accepter cela, ce qui fera planter la connexion automatique). Pensez bien a vous connecter une première fois pour accepter la clé, ou suprimmer la clé offensante en cas de réinstallation de la machine.

Configuration

Backupppc est installé sur Padova.

Tout les fichiers de configurations sont dans le dossier /etc/backuppc, ils doivent êtres des scripts perl valide.

Le fichier principal est config.pl. Il précise les configurations générales. Voici un extrait intéressant :

$Conf{ServerHost} = 'padova';
$Conf{BackupPCUser} = 'backuppc';

$Conf{TopDir} = '/var/lib/backuppc'; # Where all the backup data is stored
$Conf{ConfDir} = '/etc/backuppc'; # Where the config and hosts files resides
$Conf{LogDir} = '/var/log/backuppc'; # Log
$Conf{InstallDir} = '/usr/share/backuppc'; # Where bin and doc reside, DO NOT CHANGE
$Conf{CgiDir} = '/usr/share/backuppc/cgi-bin'; # Apache CGI dir for BackupPC_Admin 
Tout les autres paramètres régissent les mécaniques de sauvegarde, comme par exemple le nombre de sauvegarde incrémentale, etc...

Ensuite, backuppc lit le contenu du fichier hosts, chacune des lignes, décrites sous la syntaxe hostname dhcp username :

  • hostname : est le nom, résolvable par DNS, de la machine
  • dhcp : un flag valant soit 0 si l'ip est fixe, soit 1 si l'ip doit être cherchée dans le DHCP.
  • user : le nom de l'utilisateur posix ayant le droits de faire des snapshots sur la machine.
    À chaque ligne correspond une machine que backuppc va gérer.

Puis, chaque machine a une configuration propre, qui doit résider dans un fichier <hostname>.pl Le gabarit classique qu'on utilise au ResEl est le suivant :

$Conf{BackupFilesOnly} = ['/'];

$Conf{BackupFilesExclude} = ['/cdrom',...];

$Conf{RsyncShareName} = ['/', '/boot',...];
Le premier argument, BackupFilesOnly précise le dossier racine de la sauvegarde, puis on peut préciser des dossiers à exclure dans BackupFilesExlude et le

Lien utiles

Articles connexes

Ressources