BackupPC
Présentation
BackupPC est un logiciel libre écrit en PERL qui permet de sauvegarder différents postes, sous Linux, Unix, Mac Os X ou Windows. BackupPC peut utiliser différents protocoles: SMB (Server Message Block) avec samba, rsync, tar (Tape ARchive) via SSH (Secure SHell), RSH (Remote SHell) ou NFS (Network File System).
BackupPC est hautement configurable, beaucoup d'options vous sont proposées, tant au niveau des données à sauvegarder qu'au niveau de leur fréquence ou encore de l'historique des sauvegardes à conserver.
Dans le cadre des sauvegardes incrémentielles, BackupPC utilise des liens physiques vers les fichiers qui n'ont pas été modifiés ; ce qui vous garanti un accès à l'intégralité de vos données depuis une sauvegarde incrémentielle sans augmenter l'espace disque requis.
Installation
Sur Debian Etch (4.0)
apt-get install backuppc
Nécessite, entre autres, apache apache-common apache2-utils backuppc libarchive-zip-perl libcompress-zlib-perl perl-suid samba-common smbclient wwwconfig-common
Samba
Demande Nom de Domaine: Tech Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP ? Non
Backuppc
Création de l'utilisateur par défaut pour l'administration Web.
BackupPC peut être géré avec une interface Web: http://MACHINE/backuppc/
A cet effet, un utilisateur web nommé « backuppc » a été créé. Son mot de passe est actuellement « yEk5GRUO ». Vous pouvez changer ce mot de passe avec la commande:
htpasswd /etc/backuppc/htpasswd backuppc
j'ai dû relancer un
dpkg-reconfigure backuppc pour rendre active l'interface web de backuppc.
???
Configuration de backuppc Pour que l'interface d'administration web de Backuppc fonctionne correctement, j'ai besoin d'ajouter une ligne dans votre configuration d'apache qui va activer quelques alias. Si vous ne faites pas confiance aux modifications automatiques, vous pourrez ajouter vous-même un « include » du fichier /etc/backuppc/apache.conf plus tard. Ajouter un alias pour /backuppc/ dans votre configuration d'apache ? <Oui>
Par défaut, backuppc sauvegarde le répertoire /etc de la machine sur lequel il est installé.
libfile-rsyncp-perl
Pour utiliser rsync vua ssh il faut libfile-rsyncp-perl
apt-get install libfile-rsyncp-perl
sinon on a l'erreur:
dump failed: File::RsyncP module doesn't exist
Espace de sauvegarde
Utilisation d'un deuxième disque pour la sauvegarde
cfdisk /dev/sdb
New (Create new partition from free space)
Primary (Create a new primary partition)
Size => Tout le disque choix par défaut
Write
Yes
Quit
mkfs.reiserfs /dev/sdb1
Rajout de la ligne
/dev/sdb1 /var/lib/backuppc reiserfs defaults 0 2
à /etc/fstab
Déplacement de l'espace de sauvegarde
On peut éviter cette étape si on crée l'espace de stockage /var/lib/backuppc sur le second disque avant
/etc/init.d/backuppc stop cd /var/lib mv backuppc/ backuppc.old mkdir backuppc chmod 750 backuppc chown backuppc:backuppc backuppc mount /var/lib/backuppc cd backuppc.old tar cv * |(cd ../backuppc; tar xvf -) Pour conserver les liens physiques /etc/init.d/backuppc start
Passage Sur lsiit-b - Stephane - 30/11/07
J'ai migré la backup sur lsiit-b pour ne pas pénaliser les perf de lsiit-a.
Mais comme lssit-b est serveur web de secours de lsiit-a. Je ne peux pas démarrer normalement apache pour backuppc donc J'ai créé un démon apache2-backuppc qui écoute sur le port 8080 pour backuppc.
Tout est fait via cfengine.
Il reste un pb de warning quand cfengine copie des liens symboliques du serveur sur lsiit-b. J'ai donc mis un infor=false qd cfengine copie le répertoire /etc/apache2-cfengine.
Configuration
/etc/backuppc/hosts
Fichier définissant la liste des machines à sauvegarder
host dhcp user moreUsers # <--- do not edit this line localhost 0 backuppc wilde 0 backuppc lsiit-a 0 backuppc frey,muller
La première colonne correspond au nom d'hôte.
La seconde spécifie si DHCP doit être activé pour la recherche de l'hôte.
La troisième colonne indique l'utilisateur "propriétaire" de l'hôte,
la quatrième et dernière les utilisateurs
supplémentaires.
Pour chaque hôte, les utilisateurs listés dans ce fichier ainsi que l'administrateur pourront via l'interface d'administration lancer la sauvegarde et la récupération des données.
Chaque utilisateur nommé ici doit exister dans le fichier des utilisateurs (dans notre cas
/etc/backuppc/htpasswd).
/etc/backuppc/config.pl
Fichier général de configuration. Chaque variable pouvant être modifiée ensuite dans un fichier spécifique pour chaque client /etc/backuppc/machine.pl
Options de configuration choisies
- $Conf{BackupFilesOnly} = ['/etc/', '/var', '/home', '/boot'];
- $Conf{BackupFilesExclude} = ['/var/cache', '/var/lib/backuppc', '*.nobackup', '*/tmp', '*.mp3', '*.avi', '*.m4a', '*.ogg', '*.vob', '*.mov', '*.o', '.Trash*', '*/Desktop/Trash*', '*TMP', '*.svn', 'firefox/*/Cache']; + cas particuliers à revoir '*/*Maxil*o', '/home/miv/brucher/local', '/home/technique/pruniere/Sauvegarde'
- $Conf{XferMethod} = 'rsync'; rsync via ssh (pas de démon rsyncd sur les clients)
- $Conf{RsyncClientCmd} = '$sshPath -C -x -l root -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey $host $rsyncPath $argList+';
- $Conf{RsyncClientRestoreCmd} = '$sshPath -C -q -x -l root $host $rsyncPath $argList+';
- -o StrictHostKeyChecking=no pour ne pas avoir la question Are you sure you want to continue connecting à la première connection ssh
- voir option -q et -C
- $Conf{ArchiveComp} = 'bzip2';
- $Conf{EMailAdminUserName} = 'pruniere@lsiit.u-strasbg.fr';
- $Conf{EMailUserDestDomain} = '@lsiit.u-strasbg.fr';
- $Conf{Language} = 'fr';
- $Conf{CgiDateFormatMMDD} = 0; Pour avoir la date au format DD/MM
Autres options (choix par défaut)
- $Conf{ServerHost} = `hostname`; nom du serveur de sauvegarde
- $Conf{WakeupSchedule} = [1..23]; heures de réveil du serveur. La valeur 1..23 (par défaut) signifie que le serveur s'éveillera toutes les heures excepté à minuit (0)
- $Conf{BackupPCUserVerify} = 1; la valeur par défaut (1) force le script à vérifier que le serveur est lancé par l'utilisateur spécifié dans la directive $Conf{BackupPCUser}. Cela permet d'éviter que le script du serveur soit exécuté par un utilisateur non autorisé (par exemple root)
- $Conf{BackupPCUser} = 'backuppc';
- $Conf{RsyncShareName} = ['/']; système(s) de fichiers à sauvegarder en utilisant les méthodes 'rsync' et 'rsyncd' A Voir si je mets ici /home et /var
- $Conf{FullPeriod} = 6.97; périodicité de sauvegarde complète des hôtes
- $Conf{IncrPeriod} = 0.97; périodicité de sauvegarde incrémentielle des hôtes
- $Conf{FullKeepCnt} = 2; nombre de sauvegardes complètes à conserver. A revoir
- $Conf{BlackoutPeriods} = [ { hourBegin => 7.0, hourEnd => 19.5, weekDays => [1, 2, 3, 4, 5],},]; configuration du blackout. Le blackout correspond aux périodes durant lesquelles le serveur ne se réveillera pas automatiquement. Ici, la période de blackout est définie de 7 heures à 19 heures 30 pour tous les jours de la semaine (lundi (1) à vendredi (5))
- $Conf{XferLogLevel} = 1; degré de verbosité. Plus le degré sera élevé, plus le fichier de log sera complet. Il peut être utile d'augmenter cette valeur pour un hôte donné qui pose des problèmes
- $Conf{ArchiveComp} = 'bzip2'; méthode de compression à utiliser pour la sauvegarde. Cette valeur peut être 'none', 'gzip' ou 'bzip2'
- $Conf{CompressLevel} = 3; taux de compression tel que renseigné lors de l'exécution du script configure.pl. Le taux peut prendre une valeur de 0 à 9, reportez vous à la documentation de backuppc et de zlib pour plus d'informations. La valeur 3 est généralement un bon choix.
- $Conf{EMailNotifyMinDays} = 2.5; période minimale durant laquelle un utilisateur ne recevra pas de mails. La valeur par défaut (2.5) signifie que l'utilisateur ne recevra qu'un message tous les trois jours au maximum
- $Conf{EMailFromUserName} = 'backuppc'; adresse de l'expéditeur. Les emails envoyés prendront en champ from la valeur indiquée ici. Il est possible d'indiquer le nom d'utilisateur ou l'adresse email complète en fonction de la configuration de votre serveur mail
/etc/backuppc/Machine.pl
Une bonne partie des valeurs par défaut du fichier /etc/backuppc/config.pl peuvent être écrasées par les valeurs contenues dans les fichiers /etc/backuppc/Machine.pl spécifique à chaque machine
/etc/backuppc/localhost.pl
Par défaut, backuppc fait une sauvegarde du répertoire /etc de la machine localhost avec la méthode tar. Mais cette sauvegarde ne fonctionne plus dès que l'on modifie la valeur $Conf{BackupFilesOnly} dans le fichier config.pl. Si on veut conserver cette sauvegarde, il faut rajouter au fichier localhost.pl la ligne
$Conf{BackupFilesOnly} = undef;
Ssh
Lorsqu'on utilise la méthode rsync, il faut configurer ssh pour que l'utilsateur backuppc puisse se connecter sur les machines à sauvegarder à l'aide de clefs publiques/privées.
Donc sur le serveur de backup
sudo bash chown bacluppc:backuppc /var/lib/backuppc su - backuppc ssh-keygen -t rsa
=> pas de passphrase
Puis
scp .ssh/id_rsa.pub root@machineA: ssh root@machineA cat id_dsa.pub >> .ssh/authorized_keys2 & rm id_rsa.pub & exit
Ensuite l'utilisateur backuppc du serveur de sauvegarde peut se connecter en root sur la machine machineA sans mot de passe.
Pour augmenter la sécurité de l'ensemble on peut rajouter from="@IP du serveur de backup" au début de notre ligne contenant la clef publique sur le poste client. Ce qui donne
from="@IP serveurBackuppc" ssh-rsa AAAA[...]fw== backuppc@serveurBackuppc
Dans le cas où l'on automatise la copie des clefs publiques sur les clients, la première connexion pas ssh se soldera par un échec car il faut répondre à la question Are you sure you want to continue connecting. D'où l'option -o StrictHostKeyChecking=no dans le fichier de configuration /etc/backuppc/config.pl Autre solution, automatiser la copie du fichier .ssh/known_hosts (A voir)
Changement des mots de passe
à faire sur le serveur cfengine (càd sur lsiit):
htpasswd /etc/cfengine2.conf/conf/etc/backuppc/htpasswd USER
ensuite propagation du mot de passe sur lsiit-a et lsiit-b
Consultation des sauvegardes
- http://lsiitng/backuppc/ pour les machines sous windows
- http://lsiit-b:8080/backuppc/ pour les machines sous unix, linux et Mac OS X.
Sur poste Windows
2 manière de sauvegarder un poste windows avec backuppc.
- à l'aide d'un partage samba sur un réseau local
- à l'aide de rsync
avec Rsync
Il faut installer rsync sur le poste windows. On peut le trouver sur sourceforge et j'en ai fait un fichier .zip pour qu'il soit déjà préconfiguré: Cygwin-rsyncd-2-6-8_0-lsiit.zip
- Créer un compte root/algo
- Extraire cygwin-rsyncd-2.6.8_0-lsiit.zip vers C:Rsyncd
Modifier rsyncd.conf- Laisser passer ping (ICMP autoriser echo entant) et rsyncd (TCP 873) sur le par-feu windows
- Exécuter cmd : service.bat
Machines dans le réseau adm
Si le ping (donc aussi les sauvegardes) ne passent plus vers les machines du réseau administratif c'est que la route est peut-être "tombée" donc sur lsiit-a:
ip route add 130.79.218.0/23 dev eth0 via 130.79.91.254 src 130.79.90.9
à Faire
- revoir fichiers de configuration de chaque machine -> mapcoqis, lsiit-broger, pleiade, pruniere.org, sansoucis
- rajouter machine supplémentaire dans le backup (coqsis, sysley, satie, kanabis, bouraoui, oasis, reglis, kia, pastis, merinis)
- relire doc backuppc
- voir Mail Sylvain
- mail utilisateurs de chaque machine pour savoir quoi backuper. sauvegarde lsiit-a et lsiit-b sur autre serveur backuppc
- fichier par défaut pour linux, 1 fichier windows unique
- perte de la route via interface virtuelle pour les machines de l'administration (ip route add 130.79.218.0/23 dev eth0 via 130.79.91.254 src 130.79.90.9)
- Sauvegarde mac maison
- disques 500go
- raid matériel
(StrictHostKeyChecking no pour accepter clef ssh al première fois)
- mail all@lsiit
- voir de plus près tout le fichier de config
- Voir avec Sylvain Faisan la sauvegarde de gouache
- voir la gestino des mails à partir de l'interface web
- voir différence entre $Conf{RsyncShareName} et $Conf{BackupFileOnly}
- voir option rsync: --one-file-system
- Utiliser rsync avec agent ssh plutôt que des passphrases sans mot de passe (ttp://bruno.vernay.free.fr/HowTo/backuppc/)
- changer root en utilisateur particulier sur chaque client ????
- mailing list backuppc ?
- Faire sauvegarde sur lsiit-b dans un répertoire /srv avec un client apache spécifique. (ttp://bruno.vernay.free.fr/HowTo/backuppc/) pour avoir 2 serveurs de sauvegardes. sur lsiit-a: les serveurs et certaines machines (linux) sur lsiit-b: les suerveurs et d'autres machines (windows et mac)
- plutôt utiliser agents ssh que ssh sans passpharases
- modifiern Client TimeOut à 14400
- backkuppc en https
backuppc sur lsiit-b sur un port particulier pour le web
- revoir fichiers de configuration de chaque machine -> lsiit-rupp, mapcoqis, pleiade, pruniere.org, sansoucis
- rajouter machine supplémentaire dans le backup (coqsis, sysley, satie, kanabis, bouraoui, oasis, reglis, kia, pastis, merinis)
- relire doc backuppc
- mail utilisateurs de chaque machine pour savoir quoi backuper. sauvegarde lsiit-a et lsiit-b sur autre serveur backuppc
- fichier par défaut pour linux, 1 fichier windows unique
- perte de la route via interface virtuelle pour les machines de l'administration (ip route add 130.79.218.0/23 dev eth0 via 130.79.91.254 src 130.79.90.9)
- Sauvegarde mac maison
- disques 500go
- raid matériel
(StrictHostKeyChecking no pour accepter clef ssh al première fois)
- mail all@lsiit
- voir de plus près tout le fichier de config
- Voir avec Sylvain Faisan la sauvegarde de gouache
- voir la gestino des mails à partir de l'interface web
- voir différence entre $Conf{RsyncShareName} et $Conf{BackupFileOnly}
- voir option rsync: --one-file-system
- Utiliser rsync avec agent ssh plutôt que des passphrases sans mot de passe (ttp://bruno.vernay.free.fr/HowTo/backuppc/)
- changer root en utilisateur particulier sur chaque client ????
- mailing list backuppc ?
- Faire sauvegarde sur lsiit-b dans un répertoire /srv avec un client apache spécifique. (ttp://bruno.vernay.free.fr/HowTo/backuppc/) pour avoir 2 serveurs de sauvegardes. sur lsiit-a: les serveurs et certaines machines (linux) sur lsiit-b: les suerveurs et d'autres machines (windows et mac)
- revoir configuration fichier Windows (cDrive, @IP autorisé, ...)
- Wiki X/Stra