Outils personnels

BackupPC sur Debian Squeeze

De wikiGite

Révision datée du 24 mars 2011 à 08:28 par Frank (discussion | contributions) (Rétention)

Installation

apt-get install backuppc

Bien noter le mor de passe de l'utilisateur "backuppc" créé à l'installation ! Il est modifiable avec

htpasswd /etc/backuppc/htpasswd backuppc

Vérifier la connexion à la console web par http://server.domain.tld/backuppc.

L'arborescence de configuration est un peu confuse :

  • Les binaires sont dans /usr/share/backuppc, avec un répertoire conf et un fichier config.pl qui ne semblent pas pris en compte
  • la config globale et par host est dans /etc/backuppc
  • les sauvegardes se font dans /var/lib/backuppc/pc

Paramétrage

Génération des clés

Pour sauvegarder des hôtes linux par rsync via ssh, il faut générer une clé sur le serveur de sauvegarde

su - backuppc
ssh-keygen -t dsa

copier le contenu de /var/lib/backuppc/.ssh/id_dsa et le coller dans /root/.ssh/authorized_keys sur le serveur à sauvegarder.

Paramétrage global

Dans l'interface web, paramétrer le serveur de sauvegarde (menu de gauche, Server / Edit config) :

  • En premier lieu, dans l'onglet CGI, passer la langue en français (fr) puis dans le menu Admin options recharger l'interface.
  • ajouter le(s) host(s) à sauvegarder (onglet Machines). Laisser "backuppc" comme utilisateur (pour RSYNC notamment, le compte "root" est passé dans la ligne de commande (voir RsyncClientCmd). Pour TAR voir plus bas).
  • indiquer la méthode de sauvegarde par défaut (onglet Xfer - cette méthode pourra ensuite être modifiée individuellement pour chaque host)
  • Configurer le destinataire des mails d'admin (un mail valide (admin@domain.tld) dans EMailAdminUserName) dans l'onglet Courriel, pourra aussi être modifié individuellement. laisser EMailUserDestDomain vide si les mails ne sont destinés qu'a un seul mail admin.
  • vérifier les chemins des utilitaires (onglet Serveur)

Tester les mails

Pour être sûr que BackupPc réussit à envoyer des mails à partir du serveur de sauvegarde, on peut tester l'envoi :

# su - backuppc
$/usr/share/backuppc/bin/BackupPC_sendEmail -u <admin destinataire des mails>@domain.tld

BackupPC n'envoie que des mails d'erreurs. Pour envoyer un mail à chaque sauvegarde, on peut créer un script /var/lib/backuppc/mailadmin.sh

#!/bin/bash
MAIL_ADMIN=<Mail de l'admin>
if [ $1 -eq 0 ]
then
   (date
    echo "Sauvegarde BackupPC"
   )| mail -s "ERREUR BACKUP SUR $2 $(date +%d/%m)" $MAIL_ADMIN
else
   (date
    echo "Sauvegarde BackupPC"
   )| mail -s "Sauvegarde $2 $(date +%d/%m) terminee" $MAIL_ADMIN
fi

Sans oublier le

chmod 755 /var/lib/backuppc/mailadmin.sh

Et dans la configuration globale, onglet paramètres de sauvegarde, ajouter un script post backup

DumpPostUserCmd -> /var/lib/backuppc/mailadmin.sh $xferOK $host

Paramétrage des sauvegardes

Pour chaque host (en le sélectionnant dans la liste déroulante, puis "Modifier la configuration", onglet Xfer), indiquer les répertoires à sauvegarder ( RsyncShareName si RSYNC est choisi comme méthode de sauvegarde), éventuellement les répertoires à exclure (BackupFilesExclude).

Exclusions

Attention la syntaxe des exclusions est spéciale dans l'interface :

  • La "clé" représente le "RsyncShareName" auquel doit s'appliquer l'exclusion
  • un clic sur "ajouter" affiche à droite de cette clé un nouveau tableau dans lequel on mettra les fichiers ou sous-répertoires à exclure.

Exemple si le répertoire sauvegardé est /etc et qu'on veut exclure /etc/acpi, la clé sera "/etc" et dans le tableau qui s'affiche à droite on ajoutera /acpi.

Sauvegarde du serveur de sauvegarde

Par défaut une sauvegarde TAR du répertoire /etc/du serveur local est programmée. C'est une bonne idée, sauf que tar lancé par l'utilisateur backuppc n'a pas assez de droits pour sauvegarder certains fichiers protégés du système...

Première chose à faire : en sélectionnant le host "localhost", dans Xfer modifier :

TarClientCmd -> /usr/bin/sudo LC_ALL=C $tarPath -c -v -f - -C $shareName+ --totals

Note : le "LC_ALL=C" est très important pour que les messages renvoyés par TAR soient en anglais donc interprétables par BackupPC !

Puis lancer visudo (apt-get install sudo si le programme nexiste pas) ajouter à la fin du fichier :

backuppc ALL = NOPASSWD: /bin/tar

Déplacement du répertoire de sauvegarde

Le répertoire par défaut sur Debian est /var/lib/backuppc.

Ce chemin ne peut pas facilement être modifié dans le logiciel (la modification du TopDir dans Config.pl ne suffit pas, le chemin est également compilé en "dur" dans les modules Perl de BackupPc...).

Le plus simple pour le modifier est :

  • si on reste sur le même disque dur, de créer un lien symbolique vers le nouveau répertoire,
  • si on souhaite utiliser un autre disque, de copier son contenu vers ce disque et de monter celui-ci sur /var/lib/backuppc.

Planification

Dans BackupPC on ne paramètre pas les horaires de départ des sauvegardes, mais on indique les horaires auxquels les sauvegardes ne DOIVENT PAS être lancées. Ce paramètre peut être mis par défaut dans la configuration globale, ou modifiée pour chacun des hosts. Ensuite, le programme se débrouille pour planifier les sauvegardes dans ces fenêtres de temps.

Malheureusement ça n'empêche pas les backups à des heures non voulues (en pleine journée, par exemple) car le programme peut en lancer selon les conditions (un défaut de ping qui réinitialise le compteur BlackoutGoodCnt, par exemple...).

Pour éviter des sauvgardes en journée, on peut l'empêcher de "se réveiller" pour planifier des sauvegardes. Dans ce cas modifier dans l'onglet "Serveur" :

WakeupSchedule -> 22, 23, 1, 2, 3, 4, 5, 6

Le premier chiffre est l'heure de réveil de BackupPC_nightly, qui conditionne tous les autres.

Autre méthodde pour forcer une planification, on peut utiliser CRON. Explications complètes ici :

http://sourceforge.net/apps/mediawiki/backuppc/index.php?title=Schedule_Backups_With_Cron

Dans ce cas, les sauvegardes ayant lieu à des heures régulières, backuppc n'en re-planifie pas d'autres par lui-même.

Rétention

On peut jouer sur la rétention des sauvegarde selon un nombre de sauvegardes FULL à garder. C'est assez bien expliqué ici :

http://sourceforge.net/apps/mediawiki/backuppc/index.php?title=Keep_yearly_backups

Par exemple, pour garder 4 semaines glissantes + un backup par mois pour les 12 derniers mois (4 backups 1 semaine (="FullPeriod") + 0 backup datant de 2 semaines + 12 backups datant de 4 semaines) :

FullKeepCnt -> 4, 0, 12

Script PRE/POST backups

Dans "paramètres de sauvegarde" pour chaque host, on peut indiquer un script à lancer avant ou après la sauvegarde. Par exemple, pour lancer un dump MySQL avant la sauvegarde, on mettre

  $Conf{DumpPreUserCmd} -> $sshPath -q -x -l root $host /usr/bin/dumpMysql.sh

/usr/bin/dumpMysql.sh étant un script utilisant mysqldump.

TIP : Récupération d'une sauvegarde existante

Exemple : le serveur SERVER1 a déjà été sauvegardé par rync ou rdiff-backup sur une autre machine, SERBERBACKUP. On veut récupérer cette sauvegarde parce que contrairement à SERVER1, SERVERBACKUP est sur le réseau local, ça ira donc plus vite pour la première full !

On commence par paramétrer SERVERBACKUP dans backuppc, et on sauvegarde les répertoires concernés. par exemple :

/backup/SERVER1/home

On trouve donc à la fin de la sauvegarde sur backuppc un répertoire :

/var/lib/backuppc/pc/SERVERBACKUP/0/f%2fbackupf%2fSERVER1f%2fhome

On renomme le répertoire /var/lib/backuppc/pc/SERVERBACKUP

mv /var/lib/backuppc/pc/SERVERBACKUP /var/lib/backuppc/pc/SERVER1

Puis le répertoire f%2fbackupf%2fSERVER1f%2fhome :

mv /var/lib/backuppc/pc/SERVER1/0/f%2fbackupf%2fSERVER1f%2fhome /var/lib/backuppc/pc/SERVER1/0/f%2fhome

Il reste à renommer la machine SERVERBACKUP par SERVER1 dans l'interface (Modifier les machines) et ô magie : on a une sauvegarde de /home de SERVER1 !

ATTENTION : renommer la machine remet la configuration (natamment Xfer) par défaut ! Bien vérifier les paramètres après renommage.