Bacula

Bacula est un programme de sauvegarde qui vous permet de sauvegarder, restaurer et vérifier les données de votre réseau. Il existe des clients Bacula pour Linux, Windows et Mac OS X - ce qui en fait une solution multi-plateforme à l'échelle de votre réseau.

Aperçu

Bacula est constitué de plusieurs composants et services utilisés pour gérer les fichiers à sauvegarder et les emplacements de sauvegarde :

  • Bacula Director : service contrôlant les opérations de sauvegarde, de restauration, de vérification et d'archivage.

  • Bacula Console : application permettant de communiquer avec Bacula Director. Il existe trois versions de la Console :

    • Version en mode texte via ligne de commande.

    • Version graphique GTK+ (Gnome).

    • Version graphique wxWidgets.

  • Bacula File : connu aussi sous le nom Bacula Client. Cette application est installée sur les machines à sauvegarder et se charge d'envoyer les données demandées par Bacula Director.

  • Bacula Storage : programmes effectuant le stockage et la récupération des données sur le support physique.

  • Bacula Catalog : responsable de la mise à jour des index de fichiers et des bases de données de volumes pour tous les fichiers sauvegardés, permettant ainsi la localisation et la restauration rapide des fichiers archivés. Bacula Catalog prend en charge trois types de bases de données : MySQL, PostgreSQL et SQLite.

  • Bacula Monitor : permet le contrôle de Director et des démons File et Storage. Actuellement, Monitor est uniquement disponible avec une interface GTK+.

Ces services et applications peuvent être lancées sur de multiples serveurs et clients, ou ils peuvent être installés sur une machine, dans le cas de la sauvegarde d'un seul disque ou volume.

Installation

Si vous utilisez MySQL ou PostgreSQL comme base de données, vous devriez déjà avoir les services disponibles. Bacula ne les installera pas pour vous.

Il existe plusieurs paquets contenant les différents composants de Bacula. Pour installer Bacula, saisissez dans un terminal :

sudo apt-get install bacula

L'installation par défaut du paquet bacula va utiliser une base de données MySQL pour le catalogue. Si vous voulez utiliser SQLite ou PostgreSQL pour le catalogue, installez respectivement bacula-director-sqlite3 ou bacula-director-pgsql.

Pendant le processus d'installation, il vous sera demandé de fournir des informations d'authentification pour l'administrateur de la base de données et le propriétaire de la base de données bacula. L'administrateur de la base de données devra avoir les droits adéquats pour créer une base de données, consultez MySQL pour plus d'informations.

Configuration

Les fichiers de configuration de Bacula sont consitués de ressources comprenant des directives entre accolades « {} ». Chaque composant Bacula possède un fichier individuel dans le répertoire /etc/bacula.

Les divers composant de Bacula doivent s'autoriser mutuellement. Ceci est effectué par la directive password. Par exemple, le mot de passe de la ressource Storage dans le fichier /etc/bacula/bacula-dir.conf doit correspondre à celui de la ressource Director dans le fichier /etc/bacula/bacula-sd.conf.

Par défaut, la tâche de sauvegarde appelée Client1 est configurée pour archiver le catalogue Bacula. Si vous envisagez d'utiliser le serveur pour sauvegarder plus d'un client, vous devriez changer le nom de cette tâche pour quelque chose de plus descriptif. Pour changer ce nom, modifiez le fichier /etc/bacula/bacula-dir.conf:

#
# Definition des principales tâches nocturnes de sauvegardes
# Par défaut, cette tâche sauvegardera sur le disque dans
Job {
  Name = "BackupServer"
  JobDefs = "DefaultJob"
  Write Bootstrap = "/var/lib/bacula/Client1.bsr"
}

L'exemple ci-dessus remplace le nom de la tâche par BackupServer, correspondant au nom d'hôte de la machine. Remplacez « BackupServer » avec votre nom d'hôte adéquat, ou un autre nom descriptif.

La Console peut être utilisée pour interroger le Director sur des tâches, mais pour utiliser la Console avec un utilisateur non root, celui-ci doit être dans le groupe bacula. Pour ajouter un utilisateur au groupe bacula, saisissez la commande suivante dans un terminal :

sudo adduser $username bacula

Remplacez $username par le véritable nom d'utilisateur. De plus, si vous ajoutez l'utilisateur courant au groupe, vous devrez vous déconnecter puis vous reconnecter pour que les nouvelles autorisations prennent effet.

Sauvegarde de l'hôte local

Cette section décrit la façon de sauvegarder les répertoires spécifiés pour un unique hôte sur un lecteur de bande local.

  • Tout d'abord, le périphérique de stockage doit être configuré. Ajoutez, dans le fichier /etc/bacula/bacula-sd.conf :

    Device {
      Name = "Tape Drive"
      Device Type = tape
      Media Type = DDS-4
      Archive Device = /dev/st0
      Hardware end of medium = No;
      AutomaticMount = yes; # when device opened, read it
      AlwaysOpen = Yes;
      RemovableMedia = yes;
      RandomAccess = no;
      Alert Command = "sh -c 'tapeinfo -f %c | grep TapeAlert'"
    }
    

    Cet exemple est pour un lecteur de bande DDS-4. Réglez le « Type de Média » et «  Périphérique d'archivage » pour correspondre à votre matériel.

    Vous pouvez également dé-commenter l'un des autres exemples du fichier.

  • Après avoir modifié /etc/bacula/bacula-sd.conf, le démon Storage devra être redémarré :

    sudo service bacula-sd restart
    
  • Ajoutez maintenant une ressource Storage dans /etc/bacula/bacula-dir.conf pour utiliser le nouveau périphérique :

    # Definition of "Tape Drive" storage device
    Storage {
      Name = TapeDrive
      # Do not use "localhost" here    
      Address = backupserver               # N.B. Use a fully qualified name here
      SDPort = 9103
      Password = "Cv70F6pf1t6pBopT4vQOnigDrR0v3LT3Cgkiyjc"
      Device = "Tape Drive"
      Media Type = tape
    }
    

    La directive Address doit être le nom de domaine complet (FQDN) du serveur. Remplacez backupserver par le véritable nom d'hôte.

    Assurez-vous également que la directive Password corresponde à celle dans /etc/bacula/bacula-sd.conf.

  • Créez une nouvelle ressource FileSet (jeu de fichiers) qui définira les répertoires à sauvegarder, en ajoutant :

    # FileSet de sauvegarde de l'hôte local.
    FileSet {
      Name = "LocalhostFiles"
      Include {
        Options {
          signature = MD5
          compression=GZIP
        }
        File = /etc
        File = /home
      }
    }
    

    This FileSet will backup the /etc and /home directories. The Options resource directives configure the FileSet to create an MD5 signature for each file backed up, and to compress the files using GZIP.

  • Ensuite, créez une nouvelle ressource Schedule (planification) pour la tâche de sauvegarde :

    # Planification de la sauvegarde de l'hôte local -- quotidienne.
    Schedule {
      Name = "LocalhostDaily"
      Run = Full daily at 00:01
    }
    

    La tâche sera lancée chaque jour à 00 h 01. Il y a bien d'autres possibilités de planification.

  • Pour terminer, créez la tâche :

    # sauvegarde de l'hôte local.
    Job {
      Name = "LocalhostBackup"
      JobDefs = "DefaultJob"
      Enabled = yes
      Level = Full
      FileSet = "LocalhostFiles"
      Schedule = "LocalhostDaily"
      Storage = TapeDrive
      Write Bootstrap = "/var/lib/bacula/LocalhostBackup.bsr"
    }  
    

    La tâche effectuera une sauvegarde complète (« Full ») quotidienne sur bande.

  • Chaque bande utilisée devra posséder un label. Si la bande courante n'en possède pas, Bacula vous enverra un courriel vous en informant. Pour donner un label à une bande en utilisant la Console, saisissez la commande suivante dans un terminal :

    bconsole
    
  • À l'invite de commande de la console de Bacula saisissez :

    label
    
  • Il vous sera alors demandé de choisir la ressource de stockage (« storage ») :

    
    Automatically selected Catalog: MyCatalog
    Using Catalog "MyCatalog"
    The defined Storage resources are:
         1: File
         2: TapeDrive
    Select Storage resource (1-2):2
    
    
  • Saisissez le nouveau nom du volume :

    
    Enter new Volume name: dimanche
    Defined Pools:
         1: Default
         2: Scratch
    

    Remplacez dimanche par l'étiquette désirée.

  • Sélectionnez maintenant le pool:

    
    Select the Pool (1-2): 1
    Connecting to Storage daemon TapeDrive at backupserver:9103 ...
    Sending label command for Volume "Sunday" Slot 0 ...
    
    

Félicitations, vous venez de configurer Bacula pour sauvegarder l'hôte local vers un lecteur de bande connecté.

Ressources