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 :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDSzVDMUphjboG+IyaCFajE+3fJlYh4qRAGMbf9zFiu37f5V9da5AGGZvdCZK9J60g2zVC1UezM+jGRL3+EdnawLbZU1x7nlBLjMWmNWyEBjyICV2FMsGTnjeF7YPggD6TX9Gy0GBIgFna+mOS3OXcy1mHF8kSaiZFDWacHNgpqL++mjGHwzLFCaBKu2Z11yP6dGyvASBfWjxwPH1yOCK+9JoWvowBrgQhwM3QNBlGrGp6MehAIX5sbf80GqMy3qfYBe7PbpHizOsYqDmy3I1vqwgzrzQaqDck+GPtfcqKplAz+j4TNvlvge2chULYi1gzMKS0CCHok18awGf+oYLNSpnTQAwG/05ZR1EU2Gx6p6xv1KiQKbiaj3idfpV3wSGr3IsxE+9QYc8/JhyDgewM+pWX2ryC3/zZKpoo8ZNP+iSGflLpx4SQvP/O+hBeYf6Pakx2X1ko8spfw6qMLdAEBADPfb6k9WJ9NtfIxSmfTAKlzVH3EulQ475C/6aW+1H5ypUrbok3JopiXkLJNUlvQxQxFc80E1ijRbctYf1sdX2pEtLTJNtmbg36cMl3K1LX7ne7D6wgPODOM9rmBNWPDZEVQYs0FzxLqzRuffRsP56xSIer4TkAZ9k3ypqUSw0D/LB4sYeExOBV8eewPyaOJIywCpWtSrAnK6Z4muSJ4LQ== 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 :
Connectez-vous sur la machine que vous configurez (pas padova), puis:
su backuppc
ssh <nom-du-serveur>
Vérifiez que la machine est bien ajoutée sur backuppc.resel.fr
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 ; ouadduser --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