Contenu | Rechercher | Menus

Serveur de sauvegarde automatique : BackupPC

BackupPC est un logiciel libre de sauvegardes informatiques publié sous licence GPL.

Cet article va vous indiquer comment installer BackupPC, comment le configurer et comment configurer les machines clientes (Windows ou Linux).

Dans cette notice, certaines manipulations nécessitent de modifier des fichiers, mais avec la version 3 tout peut se faire via l'interface web.

Présentation

BackupPC est utilisé pour sauvegarder un ensemble de postes clients et de serveurs. Il possède une interface Web pour lancer des sauvegardes ou restaurer des fichiers. Il est également possible de sauvegarder des bases de données.

BackupPC permet de sauvegarder automatiquement à des intervalles de temps réguliers des répertoires situés sur des machines du réseau.

Il peut également faire beaucoup plus…

Il peut utiliser plusieurs protocoles pour les sauvegardes :

  • Samba : Utilise le logiciel SmbClient pour le transfert des données. C'est un bon choix pour sauvegarder des machines sous Windows.
  • rSync : Utilise le logiciel RSync pour le transfert des données (via SSH). C'est un bon choix pour sauvegarder des machines sous Linux et sous windows.
  • rSyncd : Utilise le daemon « rsyncd » installé sur chaque client. C'est un bon choix pour sauvegarder des machines sous Linux et sous Windows.
  • Tar : Utilise le logiciel Tar. C'est un bon choix pour sauvegarder des machines sous Linux.

Backuppc utilise SSH pour faire les transferts. Pour configurer SSH, aller voir ici

Fonctionnement

1. Le logiciel se réveille toutes les heures. Il sonde le pool de machines spécifiées dans le fichier /etc/backuppc/hosts. Puis, pour chaque poste allumé, il fonctionne ainsi :

  • Interrogation de la période du Blackout, si l'hôte est dans sa période de blackout, le serveur passe à la machine suivante.
  • Sinon, il étudie la machine hôte.

2. Pour chaque machine, BackupPC examine les dates des dernières sauvegardes effectuées:

  • Si la date de dernière sauvegarde complète a plus de trente jours, il en fait une nouvelle.
  • Sinon il regarde la date de la dernière sauvegarde incrémentielle. Si celle-ci a plus d'un jour, il lance une sauvegarde incrémentielle.

S'il y a plus de dix-neuf sauvegardes incrémentielles, il supprime les plus anciennes de manière à ce qu'il n'en reste que dix-neuf (limitation de l'espace disque consommé).

Installation

Pour installer BackupPC sur Ubuntu, il n'y a rien de plus simple : il suffit d'installer le paquet backuppc.

Ne pas créer l'utilisateur backuppc soi même.

Sélectionnez Apache 2

Une fenêtre debconf doit apparaître durant l'installation :

Notez bien le mot de passe pour l'utilisateur « backuppc ». Pour le modifier :

 sudo htpasswd /etc/backuppc/htpasswd backuppc

Connexion à l'interface Web

Copier la configuration pour apache

cp -a /etc/backuppc/apache.conf /etc/apache2/conf.d/backuppc.conf

puis relancer apache :

sudo /etc/init.d/apache2 restart

Il suffit ensuite d'ouvrir un navigateur Web et d'entrer l'adresse http://127.0.0.1/backuppc/. Ensuite il faut entrer « backuppc » en nom d'utilisateur et le mot de passe précédemment noté.

Configuration

Remarque : les versions récentes de BackupPC permettent maintenant de modifier la plupart des options de configuration directement depuis l'interface Web.

Mettre l'interface en français

Avec l'interface web

"Serveur" → "Modifier la configuration" → "CGI" → "Language"

En ligne de commandes

Éditez le fichier « /etc/backuppc/config.pl » avec les droits d'administration et modifiez l'option :

 $Conf{Language} = 'en'; 

en

 $Conf{Language} = 'fr'; 

Sauvegarder le fichier et recharger l'interface Web.

Où sont sauvegardées les données ?

Les données des utilisateurs sont sauvegardées dans le répertoire /var/lib/backuppc

Sauvegarder un répertoire local via tar

  1. se connecter à l'interface web : http://127.0.0.1/backuppc
  2. "Serveur" → "Modifier la configuration" → "Machine" : vérifier que la machine (host) "localhost" existe bien, avec "backuppc" comme user
  3. "Hôtes" → choisir "Localhost" dans la liste déroulante
  4. "localhost" → "Modifier la configuration" → "xfer" → "XferMethod" : choisir "tar", "TarShareName" : indiquer le chemin à sauvegarder et cliquer sur "insérer" → "Sauvegarder" (apparaît en rouge)
  5. "localhost" → "localhost Accueil" → "Démarrer la sauvegarde complète"
  6. "localhost" → "Explorer les sauvegardes" : vérifiez ici que ça a fonctionné.

La sauvegarde sera sauvée dans /var/lib/backuppc/pc/localhost

Sauvegarder un poste Linux distant via ssh

La sauvegarde se faisant au travers de ssh, il faut installer openssh-server sur le poste à sauvegarder.

openssh-server

Afin de sauvegarder un poste linux distant il est nécessaire que l'utilisateur backuppc du serveur se connecte au poste distant. Or l'utilisateur backuppc n'existe pas sur le poste distant. De plus comme il faut sauvegarder toute la machine, il faut un accès root.

Or sous Ubuntu, le compte root n'est pas activé par défaut, vous n'en connaissez pas le mot de passe, il ne sera donc pas trivial de se connecter.

Pour cela, nous allons ajouter une clef publique d'authentification de l'utilisateur backuppc du serveur à la liste des clés autorisée du root.

Sur le serveur de sauvegarde. Passer en utilisateur backuppc.

sudo su - backuppc

Générer les clés publiques privées.

ssh-keygen -t rsa

Laisser la passphrase vide sinon la connexion par clés la demandera, ce qui fait perdre de son intérêt à la connexion automatique ;-)

Vérifier que la clé est bien générée.

cat ~/.ssh/id_rsa.pub

Transférer le fichier id_rsa.pub du serveur vers le poste à sauvegarder par la manière qui vous convient le mieux, mail, clé usb , par le réseau…

Ajouter le contenu id_rsa.pub au fichier /root/.ssh/authorized_keys sur le poste à sauvegarder.

Si le répertoire .ssh n'existe pas, le créer :

sudo mkdir /root/.ssh

copier le fichier id_rsa.pub dans /root/.ssh, le renommer en authorized_keys.

Il faut forcer les droits en accès au fichier authorized_keys : complet à l'utilisateur root (propriétaire de ce fichier). Le groupe root doit avoir accès en lecture seule. Les autres ne doivent avoir qu'un accès en lecure seule.

À défaut de cette manipulation, lors de la connexion ssh il vous sera tout de même demandé le mot de passe.

sudo chmod 600 /root/.ssh

Ensuite, depuis le serveur de sauvegarde, tenter une première connexion ssh vers le poste à sauvegarder (attention, si vous avez renseigné le nom du poste plutôt que son adresse IP, utilisez-le ici aussi) :

ssh root@adresse.ip.du.poste.a.sauvegarder

Répondre yes.

Attention : il faut être toujours l'utilisateur backuppc sur le poste de sauvegarde pour que cette précédente commande fonctionne.

Rappel ; S'il vous est demandé un mot de passe vérifiez que vous avez bien mis les droits sur .ssh et authorized_keys

Pour que seul le serveur de Backup puisse se connecter en SSH, il suffit de saisir au début du fichier authorized_keys enregistré sur le poste à sauvegarder : from="ip_serveur_de_backup" (sur la même ligne que la clé). D'autres options sont également disponibles.

Maintenant, il suffit d'ajouter la machine à sauvegarder à la liste.

  1. "Serveur" → "Modifier les machines" → "Machines" → ajouter adresse.ip.de.la.machine.a.sauvegarder avec "backuppc" comme user
  2. "Hôtes" → choisir adresse.ip.de.la.machine.a.sauvegarder dans la liste déroulante
  3. "Modifier la configuration" → "xfer" → "XferMethod" : choisir "rsync", → "Sauvegarder" (apparaît en rouge)
  4. "adresse.ip.de.la.machine.a.sauvegarder Accueil" → "Démarrer la sauvegarde complète"
  5. "Explorer les sauvegardes" : vérifiez ici que ça a fonctionné.

Sauvegarder un poste Mac OS distant via ssh

Testé sur Mac OS 10.6 & 10.7. La sauvegarde se faisant au travers de ssh, activer le server ssh en cochant session a distance dans preferences système, partage. Afin de sauvegarder un poste linux distant il est nécessaire que l'utilisateur backuppc du serveur se connecte au poste distant.

Se connecter au mac à sauvegarder en ssh avec un compte admin du mac qui a un mot de passe.

ssh admin@ip du mac

Passer en utilisateur root

sudo -su root

Générer des clés ssh afin de créer le repertoire .ssh avec les droits appropriés.

ssh-keygen -t rsa

Allé dans le dossier .ssh, supprimer les clés générer et créer authorized_keys.

cd /var/root/.ssh/
rm *
vi authorized_keys

Coller dans le fichier authorized_keys le contenu du fichier id_rsa.pub de l'utilisateur backuppc du serveur de sauvegarde et enregistrer en tapant echap puis

:wq!

Ensuite, depuis le serveur de sauvegarde, tenter une première connexion ssh vers le poste à sauvegarder (attention, si vous avez renseigné le nom du poste plutôt que son adresse IP, utilisez-le ici aussi) :

ssh root@adresse.ip.du.poste.a.sauvegarder

Répondre yes.

Attention : il faut être toujours l'utilisateur backuppc sur le poste de sauvegarde pour que cette précédente commande fonctionne.

Maintenant, il suffit d'ajouter la machine à sauvegarder à la liste.

  1. "Serveur" → "Modifier les machines" → "Machines" → ajouter adresse.ip.de.la.machine.a.sauvegarder avec "backuppc" comme user
  2. "Hôtes" → choisir adresse.ip.de.la.machine.a.sauvegarder dans la liste déroulante
  3. "Modifier la configuration" → "xfer" → "XferMethod" : choisir "rsync", → "Sauvegarder" (apparaît en rouge)
  4. "adresse.ip.de.la.machine.a.sauvegarder Accueil" → "Démarrer la sauvegarde complète"
  5. "Explorer les sauvegardes" : vérifiez ici que ça a fonctionné.

Sauvegarder sur un disque dur externe USB

  • Formater le disque dur USB en ext3 (Système → Administration → Éditeur de partitions)
  • Créer un répertoire pour la sauvegarde sur le disque USB . Ex
 mkdir /media/disk/sauvegardes/backuppc/localhost
  • Copier la configuration sur le disque USB :
 sudo cp -r /var/lib/backuppc/pc/localhost /media/disk/sauvegardes/backuppc/localhost
  • Donner les droits pour backuppc à ce répertoire :
 sudo chown backuppc:backuppc /media/disk/sauvegardes/backuppc -R
  • Renommer (ou supprimer) le répertoire de sauvegarde originel :
 sudo mv /var/lib/backuppc/pc/localhost /var/lib/backuppc/pc/localhost_ori
  • Créer un lien symbolique entre /var/lib/backuppc et le nouveau répertoire :
 sudo ln -s /media/disk/sauvegardes/backuppc/localhost /var/lib/backuppc/pc/localhost
  • Modifier les horaires de sauvegarde pour éviter qu'il ne sauvegarde automatiquement quand le disque est débranché : "localhost" → "Modifier la configuration" → "Horaires"

Sauvegarder des postes Windows via « rsyncd »

Configuration des postes Windows

Je ne vais pas m'étendre ici sur la configuration des postes Windows. Juste indiquer qu'il existe un paquet tout fait sur le site de BackupPC, qui, en moins de 1 Mio comprend une version de CygWin et le binaire de Rsync. Ce paquet s'appelle « cygwin-rsyncd » et est disponible à l'adresse suivante : http://sourceforge.net/project/showfiles.php?group_id=34854.

Ensuite, il suffit de suivre les instructions du « README.TXT » de ce paquet. Je considère donc pour la suite de cet article que vous avez :

  • un module « docs » partagé par rsyncd ;
  • ce module doit permettre l'accès en écriture à l'utilisateur « UUU » avec le mot de passe « PPP » ;
  • le service rsyncd lancé sur ce PC.

Configuration du fichier « config.pl »

Éditez le fichier « /etc/backuppc/config.pl » avec les droits d'administration et modifiez les options suivantes :

 $Conf{XferMethod} = 'rsyncd'; 
 $Conf{RsyncdUserName}  = "UUU"; 
 $Conf{RsyncdPasswd}    = "PPP"; 
 $Conf{RsyncShareName}  = "docs"; 

Sauvegarder le fichier et recharger la configuration via l'interface Web.

Sauvegarder des postes Windows via « smb »

Configuration des postes Windows

Créez un utilisateur (backup) avec un mot de passe (mdpbupc), puis créez un partage (docs$) sur la ressource à sauvegarder avec les droits modifier et lecture pour l'utilisateur créé précédemment.

Puis, effectuez les modifications des fichiers "config.pl" et "hosts" ou effectuez les changements dans l'interface web

Configuration du fichier « config.pl »

Éditez le fichier « /etc/backuppc/config.pl » avec les droits d'administration et modifiez les options suivantes :

 $Conf{XferMethod} = 'smb'; 
 $Conf{SmbShareUserName} = 'backup';
 $Conf{SmbSharePasswd} = 'mdpbupc'; 
 $Conf{SmbShareName} = 'docs$'; 

Sauvegarder le fichier et recharger la configuration via l'interface Web.

Configuration du fichier « hosts »

Éditez le fichier « /etc/backuppc/hosts » avec les droits d'administration et modifiez les options suivantes : puis ajouter cette ligne en fin de fichier (192.168.1.10 étant l'adresse IP de votre machine Windows) :

 192.168.1.10	0	utilisateur	UUU 

Sauvegarder le fichier et recharger la configuration via l'interface web.

Sauvegarder des PC éteints

il est intéressant de pouvoir effectuer la sauvegarde des machines lorsqu'elles ne sont pas en production, par exemple la nuit. Par défaut, backuppc ne permet pas de gérer le wake on lan, mais avec quelques astuces, c'est possible!

Configuration du WOL sur le serveur

l'outil etherwake est parfait pour démarrer une machine à distance, pour pouvoir utiliser ce dernier avec le nom de la machine au lieu de son adresse MAC il faut compléter le fichier /etc/ethers :

 adresse:MAC	nom_machine 

il va sans dire que le nom de la machine doit être déclaré comme dans le fichier /etc/backuppc/hosts.

Pour que le fichier ethers soit pris en compte par etherwake modifier le fichier /etc/nsswitch.conf, à la ligne ethers :

 ethers:         files 

Par defaut, la commande etherwake n'est exécutable que par root, pour remédier à cela :

 ln /usr/sbin/etherwake /usr/bin/
 chmod +s /usr/sbin/etherwake 

Script de réveil et d'arrêt des machines

j'ai créé des petits scripts, dans le dossier /etc/backuppc/ , pour l'envoi du paquet magique et pour l'arrêt de la machine. Je suis sûr qu'ils peuvent être améliorés…

voici le fichier wol.sh qui envoie le paquet magique:

 #!/bin/bash

declare -i z
z=0
i=0
/usr/sbin/etherwake $1
sleep 1m
while [ $i = 0 -a $z -lt 15 ]
do
        if smbclient -L $1 -U backup%mdpbupc>/dev/null
                then
                        i=1
        fi
sleep 10s
z=z+1
done 

explication : une fois la commande etherwake exécutée, j'ai mis une pause d'une minute pour laisser le temps au pc de démarrer, puis la boucle while teste si le partage est actif, après 15 essais sans résultat la boucle s'arrête.

le fichier shutdown.sh

 #!/bin/bash
if [ $(date +%k) -lt 07 -o $(date +%k ) -gt 20 ]
then
	/usr/bin/net rpc SHUTDOWN -f -I $1 -U administrateur%mdpadministrateur -t 30
else
        if [ $2 = 1 ]
        then
            echo sauvegarde terminé avec succès. | smbclient -M $1 --user="backuppc"
        fi
fi 

explication: entre 20h00 et 07h00 il exécute la commande d'extinction du pc sauvegardé, en dehors de cette plage horaire au lieu d'arrêter la machine, un message est envoyé.

N'oubliez pas de rendre les scripts exécutables pour l'utilisateur backuppc!

Cette commande :

net rpc SHUTDOWN -f -I $1 -U administrateur%mdpadministrateur -t 30

peut ne pas fonctionner si le pc sous Windows n'accepte pas l'exécution de la commande d'extinction à distance. Pour parer à cela je vous invite à lire le dernier message de cette discutions ici

Configuration de backuppc pour utiliser les scripts

backuppc contrôle la présence du pc sur le réseau avec ping, sans quoi il n'effectue pas de sauvegarde, nous allons remédier à cela, dans le fichier /etc/backuppc/config.pl modifier :

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

par

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

et ajouter les chemins des scripts comme suit :

$Conf{DumpPreUserCmd}     = '/etc/backuppc/wol.sh $host';
$Conf{DumpPostUserCmd}    = '/etc/backuppc/shutdown.sh $host $xferOK';

Sauvegardez le fichier et recharger la configuration via l'interface web.

Ne vous reste plus qu'à activer le wol sur les postes clients…

Erreurs

No files dumped for share ...

Cliquez sur "Last bad XferLOG". Si vous obtenez un message ressemblant à :

/bin/tar: –totals: Cannot chdir: No such file or directory

Sauvez votre configuration backuppc, puis effectuez ces commandes avec la console :

sudo mv /etc/backuppc/localhost.pl /etc/backuppc/fileserver.pl

 sudo chown backuppc:www-data /etc/backuppc/fileserver.pl 

Reparamétrez votre configuration dans xfer.

Erreur de connexion avec ssh

Dans ce cas, il faut très basiquement modifier le fichier « /etc/ssh/sshd_config » de la manière suivante :

# Change to yes to enable tunnelled clear text passwords
PasswordAuthentication yes

Puis redémarrer le service avec la commande :

sudo /etc/init.d/ssh restart

Erreur NT_STATUS...

Pour se connecter aux partages SMB, backuppc utilise smbclient et lui passe par défaut l'argument -N qui siginifie no password.

Apparament dans une version antérieure de smbclient même si -N était spécifié, le mot de passe était quand même demandé, ainsi même si le partage avait un mot de passe smblient pouvait s'y connecter.

Toutefois, ceci a été corrigé dans la nouvelle version de smbclient mais backuppc utilise toujours le -N. Ainsi, cette option empêche de prendre en compte votre mot de passe et provoquera une erreur.

Pour corriger ceci, sur la page web de backuppc, ouvrez Edit Config du Server, puis sous l'onglet Xfer supprimer le -N dans les 3 commandes pour la sauvegarde (smblient… -N …).

restore failled (BackupPC_tarCreate failed)

Erreur rencontrée lors de la restauration des données, le problème venait de la clé publique enregistré dans le fichier /root/.ssh/authorized_keys .

Solution : Re-générer le jeu de clés de l'utilisateur backuppc, insérer la clé publique de backuppc dans le fichier /root/.ssh/authorized_keys , modifier les droits sur le fichier.

Conclusion

Cette configuration de BackupPC permet de mettre en œuvre rapidement une sauvegarde des postes Windows d'un réseau.

Bien sûr, BackupPC est un outil merveilleux et peut être paramétré plus en profondeur. Je vous conseille pour cela de lire la documentation de BackupPC.

Liens utiles


backuppc.txt · Dernière modification: Le 27/01/2012, 16:29 par 41.202.119.204
Le contenu de ce wiki est sous licence : CC BY-SA v3.0