La sauvegarde : Bacula
Bacula
Introduction
Bacula est un ensemble de programmes qui vous permet de gérer vos sauvegardes, restaurations ou vérifications de données d'un ordinateur sur un réseau hétérogène.
En termes techniques, il s'agit d'un programme de sauvegarde client/serveur.
Bacula est relativement facile d'utilisation et efficace, tout en offant de nombreuses fonctions avancées de gestion de stockage qui facilitent la recherche et la restauration de fichiers perdus ou endommagés.
La plupart du code source de Bacula a été publiée sous une version quelque peu modifiée de la license GPL version 2. Pour toute information complémentaire sur la license, merci de suivre le lien du menu.
Son nom est une référence au mot "Backup" (sauvegarde) et à Dracula. Le slogan dit : "Il arrive la nuit et absorbe l’essence vitale de vos ordinateurs".
Il est utilisé pour sauvegarder via la réseau un ensemble de postes clients et de serveurs. Son originalité réside, en partie, dans le fait qu'il utilise un SGBD libre (MySQL, PostgreSQL...) pour gérer le catalogue des sauvegardes.
Architecture
- Le ‘Directeur’ (un seul par architecture de sauvegarde) est installé sur une machine linux, c’est le cœur du système de sauvegarde. Il « commande » et unit les différents éléments. C’est lui que l’on configure pour planifier les sauvegardes et les restaurations de fichiers.
- Le ‘Storage Daemon’ est chargé de l’écriture et de la lecture sur le support de sauvegarde (Disques durs, lecteur de bandes…). Il peut y avoir plusieurs serveurs de stockage par architecture de sauvegarde.
- Le ‘Filer Daemon’ est la partie cliente de Bacula. Il sera installé sur la machine où se trouvent les données à sauvegarder. Ce programme est exécuté en tant que service. Il fonctionne sur toutes les versions actuelles de Windows (95, 98, Me, NT, 2000, XP, 2003) et sous forme d’une installation standard (.exe).
- La ’Console’ permet à l’administrateur de communiquer avec le directeur, pour lancer une sauvegarde ou une restauration manuellement, de lister les différents paramètres ou sauvegardes du directeur mais aussi des clients bacula et serveurs de stockage. Elle peut être exécutée depuis n’importe quelle machine qui peut accéder au directeur.
- Le ‘Catalogue’ contient toutes les configurations et toutes les informations concernant les volumes, pools, jobs et fichiers sauvegardés de bacula. Il utilise les Bases de Données. Bacula supporte actuellement trois bases de données différentes, MySQL, PostgreSQL, et SQLite. SQLite est fourni avec l’installation de Bacula. Le catalogue peut être sauvegardé ou encore reconstruit à partir des fichiers sauvegardés.
Il faut savoir que tous ces composants peuvent être installés sur des machines dédiées mais bien sûr ce n’est pas obligatoire.
Comme dans l’exemple ci-dessous, on peut avoir d’autres types d’architecture pour faire de la sauvegarde à distance.
Configuration
Il y a 4 fichiers de configuration différents :
- bacula-dir.conf : Pour configurer le directeur. Un seul fichier car il n’y a qu’un seul directeur par architecture de sauvegarde.
- bacula-fd.conf : Configuration du client (Filer Daemon). On le retrouve sur les clients. Il peut y avoir plusieurs clients sur une même architecture. Donc un fichier de ce type par client.
- bacula-sd.conf : Configuration du serveur de stockage (Storage Daemon). On le retrouve sur les serveurs de stockage. Il peut y en avoir plusieurs sur une même architecture. Donc un fichier de ce type par serveur de stockage.
- bconsole.conf : Configuration de la console bacula. On retrouve ce fichier sur chaque ordinateur possédant la console Bacula.
Tous les fichiers de configuration sont basés sur le même principe, les différents paramètres se présentent sous forme de fonctions, un peu comme un langage de programmation. Ce système permet une grande modularité.
Directeur
- Director : Cette fonction touche à la configuration du directeur lui-même. On donne le nom du directeur ainsi que le mot de passe.
- Client : On déclare grâce à cette fonction les différents clients (Filer Daemon) qui pourront être utilisés par ce directeur. On indique pour chaque client divers paramètres comme son nom, son adresse IP, mot de passe …
- Schedule : Les fonctions ‘Schedule’ définissent chacune un modèle de planification. On indique le type de la sauvegarde ainsi que la date et l’heure à laquelle elle sera lancée. Pour chaque fonction, il peut y avoir plusieurs dates et heures.
- Storage : On déclare grâce à cette fonction tous les serveurs de stockage (Storage Daemon), donc l’endroit où les données seront sauvegardées. Bien entendu, la machine désignée doit avoir un ‘Storage Daemon’ installé et lancé.
- FileSet : C’est cet objet qui définit les fichiers qui seront sauvegardés ou restaurés. On peut inclure ou exclure des fichiers ou des dossiers et utiliser la compression et la signature.
- Pool : Les fonctions ‘Pools’ définissent un ensemble de volumes de stockage pour sauvegarder les données. Avec plusieurs pools configurés, on peut définir quel ensemble recevra les sauvegardes. Par exemple, on peut stocker toutes les sauvegardes complètes sur un ensemble de volumes et les sauvegardes différentielles sur un autre ensemble de volumes. Ou encore de sauvegarder les différentes machines sur différents ensembles. Cela permet de séparer les sauvegardes.
- Catalogue : Cet objet permet de définir différents catalogues, qui pourront être utilisés par les Jobs.
- Messages : C’est ici que l’on redirige tous les messages des différents clients ou serveurs de stockage. On peut utiliser plusieurs fonctions pour envoyer différents types de message sur différents emails.
- Job : Permet de définir une tâche de sauvegarde, de restauration ou de vérification.
La configuration du directeur est le gros du travail car c’est le centre du système. On y trouve une multitude de fonctions différentes.
Voici un exemple de fichier de configuration pour le directeur :
Director { Name = rufus-dir QueryFile = "/home/kern/bacula/bin/query.sql" WorkingDirectory = "/home/kern/bacula/bin/working" PidDirectory = "/home/kern/bacula/bin/working" Password = "XkSfzu/Cf/wX4L8Zh4G4/yhCbpLcz3YVdmVoQvU3EyF/" } # Define the backup Job Job { Name = "NightlySave" Type = Backup Level = Incremental Client=rufus-fd FileSet="Full Set" Schedule = "WeeklyCycle" Storage = DLTDrive Messages = Standard Pool = Default } Job { Name = "Restore" Type = Restore Client=rufus-fd FileSet="Full Set" Where = /tmp/bacula-restores Storage = DLTDrive Messages = Standard Pool = Default } # List of files to be backed up FileSet { Name = "Full Set" Include { Options { signature=SHA1 } File = / } Exclude { } } # When to do the backups Schedule { Name = "WeeklyCycle" Run = Full sun at 1:05 Run = Incremental mon-sat at 1:05 } # Client (File Services) to backup Client { Name = rufus-fd Address = rufus Catalog = MyCatalog Password = "MQk6lVinz4GG2hdIZk1dsKE/LxMZGo6znMHiD7t7vzF+" File Retention = 60d # sixty day file retention Job Retention = 1y # 1 year Job retention AutoPrune = yes # Auto apply retention periods } # Definition of file storage device Storage { Name = File Address = rufus Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ" Device = FileStorage Media Type = File } # Generic catalog service Catalog { Name = MyCatalog dbname = bacula; user = bacula; password = "" } # Reasonable message delivery -- send most everything to # the email address and to the console Messages { Name = Standard mail = root@localhost = all, !skipped, !terminate operator = root@localhost = mount console = all, !skipped, !saved } # Default pool definition Pool { Name = Default Pool Type = Backup AutoPrune = yes Recycle = yes } # # Restricted console used by tray-monitor to get the status of the director # Console { Name = Monitor Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR" CommandACL = status, .status }
Storage Daemon
On passe maintenant au fichier de configuration du SD (serveur de stockage).
Heureusement, avec les dispositifs de stockage modernes, les défauts sont suffisants, et très peu de directives sont réellement nécessaires.
Ce fichier de configuration est composé de quatre éléments.
- Storage : Cette fonction définit les propriétés globales du serveur de stockage. On y indique son nom et le port sur lequel il écoute, etc…
- Director : Permet de définir les directeurs qui seront autorisés à utiliser les services de ce serveur de stockage. Il peut y avoir plusieurs directeurs.
- Device : Cette fonction spécifie le matériel de stockage ainsi que l’emplacement des sauvegardes dans celui-ci. Cela permet de répartir plusieurs sauvegardes sur le même disque dur ou sur plusieurs disques durs.
- Messages : Sert à paramétrer l’envoi de différents messages au directeur, comme les erreurs de sauvegardes.
Voici un exemple de fichier de configuration pour le directeur :
Storage { # definition of myself Name = rufus-sd Address = rufus WorkingDirectory = "$HOME/bacula/bin/working" Pid Directory = "$HOME/bacula/bin/working" Maximum Concurrent Jobs = 20 } # List Directors who are permitted to contact Storage daemon Director { Name = rufus-dir Password = "ZF9Ctf5PQoWCPkmR3s4atCB0usUPg+vWWyIo2VS5ti6k" } # Restricted Director, used by tray-monitor to get the # status of the storage daemon Director { Name = rufus-mon Password = "9usxgc307dMbe7jbD16v0PXlhD64UVasIDD0DH2WAujcDsc6" Monitor = yes } Device { Name = FileStorage Media Type = File Archive Device = /tmp LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; } Messages { Name = Standard director = rufus-dir = all operator = root = mount }
Filer Daemon (client)
La configuration du client est assez simple et se fait grâce à un seul fichier.
Ce fichier de configuration est composé de trois éléments :
- Director : Cette fonction permet d’autoriser un directeur à se connecter au client. Il peut y en avoir plusieurs.
- Client : Le client ou Filer Daemon permet de configurer le client de l’ordinateur qui contient les fichiers à sauvegarder. Il y a donc un seul ‘client’ par ordinateur. On y trouve différents paramètres comme son nom ou encore le port sur lequel il écoute.
- Messages : Sert à paramétrer l’envoi de différents messages au directeur comme l’échec ou la réussite d’une sauvegarde.
Voici un exemple de fichier de configuration pour le directeur :
Director { Name = rufus-dir Password = "/LqPRkX++saVyQE7w7mmiFg/qxYc1kufww6FEyY/47jU" } # Restricted Director, used by tray-monitor to get the # status of the file daemon Director { Name = rufus-mon Password = "FYpq4yyI1y562EMS35bA0J0QC0M2L3t5cZObxT3XQxgxppTn" Monitor = yes } # "Global" File daemon configuration specifications FileDaemon { # this is me Name = rufus-fd WorkingDirectory = $HOME/bacula/bin/working Pid Directory = $HOME/bacula/bin/working } # Send all messages except skipped files back to Director Messages { Name = Standard director = rufus-dir = all, !skipped }
GUI
Il existe principalement à ce jour deux add-ons d'interface graphique web pour Bacula :
- bweb : Bweb est une interface web qui fournit un outil pour les opérations basique et le reporting.
- brestore : Brestore est un outil graphique de restauration, disponible sur les systèmes supportant Perl/GTK/Glade.