Comment installer le serveur Bacula sur Ubuntu 14.04

introduction

Bacula est une solution de sauvegarde réseau open source qui vous permet de créer des sauvegardes et de récupérer les données de vos systèmes informatiques. Il est très flexible et robuste, ce qui le rend légèrement encombrant à configurer, mais également adapté aux sauvegardes dans de nombreuses situations. Un système de sauvegarde est unimportant component in most server infrastructures, car la récupération après une perte de données est souvent un élément critique des plans de reprise après sinistre.

Dans ce tutoriel, nous allons vous montrer comment installer et configurer les composants serveur de Bacula sur un serveur Ubuntu 14.04. Nous allons configurer Bacula pour effectuer un travail hebdomadaire créant une sauvegarde locale (c.-à-d. une sauvegarde de son propre hôte). Ceci, en soi, n’est pas une utilisation particulièrement convaincante de Bacula, mais cela vous fournira un bon point de départ pour créer des sauvegardes de vos autres serveurs, c.-à-d. les clients de sauvegarde. Le prochain didacticiel de cette série couvrira la création de sauvegardes de vos autres serveurs distants en installant et configurant le client Bacula, ainsi que la configuration du serveur Bacula.

Si vous préférez utiliser CentOS 7 à la place, suivez ce lien:How To Install Bacula Server on CentOS 7.

Conditions préalables

Vous devez avoir un accès superutilisateur (sudo) sur un serveur Ubuntu 14.04. En outre, le serveur aura besoin d'un espace disque suffisant pour toutes les sauvegardes que vous prévoyez de conserver à un moment donné.

Si vous utilisez DigitalOcean, vous devez activerPrivate Networking sur votre serveur Bacula et tous vos serveurs clients qui se trouvent dans la même région de centre de données. Cela permettra à vos serveurs d'utiliser un réseau privé lors des sauvegardes, réduisant ainsi la surcharge du réseau.

Nous allons configurer Bacula pour utiliser le nom de domaine complet privé de nos serveurs, par exemple. bacula.private.example.com. Si vous n’avez pas de configuration DNS, utilisez plutôt les adresses IP appropriées. Si vous n’avez pas activé la mise en réseau privée, remplacez toutes les informations de connexion réseau de ce didacticiel par des adresses réseau accessibles par les serveurs en question (par exemple, adresses IP publiques ou tunnels VPN).

Commençons par un aperçu des composants de Bacula.

Présentation du composant Bacula

Bien que Bacula soit composé de plusieurs composants logiciels, il suit le modèle de sauvegarde serveur-client; pour simplifier la discussion, nous nous concentrerons davantage sur lesbackup server et lesbackup clients que sur les composants individuels de Bacula. Néanmoins, il est important d’avoir une connaissance sommaire des différentes composantes de Bacula, nous allons donc les passer en revue maintenant.

Un Baculaserver, que nous appellerons également le «serveur de sauvegarde», a ces composants:

  • Bacula Director (DIR): Logiciel qui contrôle les opérations de sauvegarde et de restauration effectuées par les démons File et Storage

  • Storage Daemon (SD): Logiciel qui effectue des lectures et des écritures sur les périphériques de stockage utilisés pour les sauvegardes

  • Catalog: Services qui gèrent une base de données de fichiers sauvegardés. La base de données est stockée dans une base de données SQL telle que MySQL ou PostgreSQL

  • Bacula Console: Une interface de ligne de commande qui permet à l'administrateur de sauvegarde d'interagir avec et de contrôler Bacula Director

Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

A Baculaclient, c'est-à-dire un serveur qui sera sauvegardé, exécute le composantFile Daemon (FD). File Daemon est un logiciel qui fournit au serveur Bacula (le directeur, en particulier) un accès aux données à sauvegarder. Nous ferons également référence à ces serveurs en tant que «clients de sauvegarde» ou «clients».

Comme nous l'avons noté dans l'introduction, nous allons configurer le serveur de sauvegarde pour créer une sauvegarde de son propre système de fichiers. Cela signifie que le serveur de sauvegarde sera également un client de sauvegarde et exécutera le composant File Daemon.

Commençons par l’installation.

Installer MySQL

Bacula utilise une base de données SQL, telle que MySQL ou PostgreSQL, pour gérer son catalogue de sauvegardes. Nous allons utiliser MySQL dans ce tutoriel.

Tout d'abord, mettez à jour apt-get:

sudo apt-get update

Maintenant, installez MySQL Server avec apt-get:

sudo apt-get install mysql-server

Un mot de passe vous sera demandé pour l'utilisateur administratif de la base de données MySQL, root. Entrez un mot de passe, puis confirmez-le.

N'oubliez pas ce mot de passe, car il sera utilisé dans le processus d'installation de Bacula.

Installer Bacula

Installez les composants serveur et client de Bacula en utilisant apt-get:

sudo apt-get install bacula-server bacula-client

Des informations vous seront demandées pour configurer Postfix. Ces informations sont utilisées par Bacula:

  • General Type of Mail Configuration: Choisissez "Site Internet"

  • System Mail Name: Entrez le nom de domaine complet ou le nom d'hôte de votre serveur

Ensuite, vous serez invité à fournir des informations qui seront utilisées pour configurer la base de données Bacula:

  • Configure database for bacula-director-mysql with dbconfig-common?: Sélectionnez «Oui»

  • Password of the database’s administrative user: Entrez votre mot de passe root MySQL (défini lors de l'installation de MySQL)

  • MySQL application password for bacula-director-mysql: entrez un nouveau mot de passe et confirmez-le, ou laissez l'invite vide pour générer un mot de passe aléatoire

La dernière étape de l'installation consiste à mettre à jour les autorisations d'un script utilisé par Bacula lors de son travail de sauvegarde de catalogue:

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

Les composants serveur (et client) de Bacula sont maintenant installés. Créons les répertoires de sauvegarde et de restauration.

Créer des répertoires de sauvegarde et de restauration

Bacula a besoin d'un répertoirebackup — pour stocker les archives de sauvegarde — et d'un répertoirerestore — où les fichiers restaurés seront placés. Si votre système comporte plusieurs partitions, veillez à créer les répertoires sur une partition disposant de suffisamment d'espace.

Créons de nouveaux répertoires à ces deux fins:

sudo mkdir -p /bacula/backup /bacula/restore

Nous devons modifier les autorisations de fichier afin que seul le processus bacula (et un superutilisateur) puisse accéder à ces emplacements:

sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Nous sommes maintenant prêts à configurer Bacula Director.

Configurer Bacula Director

Bacula a plusieurs composants qui doivent être configurés indépendamment pour fonctionner correctement. Les fichiers de configuration se trouvent tous dans le répertoire/etc/bacula.

Nous allons commencer par le directeur Bacula.

Ouvrez le fichier de configuration de Bacula Director dans votre éditeur de texte préféré. Nous allons utiliser vi:

sudo vi /etc/bacula/bacula-dir.conf

Configurer les travaux locaux

Un travail Bacula est utilisé pour effectuer des actions de sauvegarde et de restauration. Les ressources de travail définissent les détails de ce que fera un travail particulier, y compris le nom du client, le FileSet à sauvegarder ou à restaurer, entre autres.

Ici, nous allons configurer les travaux qui seront utilisés pour effectuer des sauvegardes du système de fichiers local.

Dans la configuration de Director, recherchez la ressourceJob avec le nom «BackupClient1» (recherchez «BackupClient1»). Changez la valeur deName en «BackupLocalFiles», pour qu'elle ressemble à ceci:

bacula-dir.conf — Rename BackupClient1 job

Job {
  Name = "BackupLocalFiles"
  JobDefs = "DefaultJob"
}

Ensuite, recherchez la ressourceJob nommée «RestoreFiles» (recherchez «RestoreFiles»). Dans ce travail, vous voulez changer deux choses: mettre à jour la valeur deName en «RestoreLocalFiles» et la valeur deWhere en «/ bacula / restore». Ça devrait ressembler à ça:

bacula-dir.conf — Rename RestoreFiles job

Job {
  Name = "RestoreLocalFiles"
  Type = Restore
  Client=BackupServer-fd
  FileSet="Full Set"
  Storage = File
  Pool = Default
  Messages = Standard
  Where = /bacula/restore
}

Cela configure le travail RestoreLocalFiles pour restaurer les fichiers dans/bacula/restore, le répertoire que nous avons créé précédemment.

Configurer le jeu de fichiers

Un FileSet Bacula définit un ensemble de fichiers ou de répertoires en fichiersinclude ouexclude à partir d'une sélection de sauvegarde, et est utilisé par les jobs.

Recherchez la ressource FileSet nommée "Ensemble complet" (elle se trouve sous un commentaire indiquant: "# Liste des fichiers à sauvegarder"). Ici, nous allons faire trois changements: (1) Ajouter l'option pour utiliser gzip pour compresser nos sauvegardes, (2) changer le fichier d'inclusion de/usr/sbin à/, et (3) changer le deuxième fichier d'exclusion à/bacula. Avec les commentaires supprimés, cela devrait ressembler à ceci:

bacula-dir.conf — Update “Full Set” FileSet

FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
File = /
}
  Exclude {
    File = /var/lib/bacula
    File = /bacula
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

Passons en revue les modifications apportées à l’ensemble de fichiers «Ensemble complet». Tout d'abord, nous avons activé la compression gzip lors de la création d'une archive de sauvegarde. Deuxièmement, nous incluons/, c'est-à-dire la partition racine, à sauvegarder. Troisièmement, nous excluons/bacula parce que nous ne voulons pas sauvegarder de manière redondante nos sauvegardes Bacula et nos fichiers restaurés.

Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.

N'oubliez pas que si vous utilisez toujours des ensembles de fichiers étendus, tels que «Ensemble complet», dans vos tâches de sauvegarde, vos sauvegardes nécessiteront plus d'espace disque que si vos sélections de sauvegarde sont plus spécifiques. Par exemple, un ensemble de fichiers comprenant uniquement vos fichiers de configuration personnalisés et vos bases de données peut suffire à vos besoins, si vous disposez d'un plan de récupération clair détaillant l'installation des packages logiciels requis et le placement des fichiers restaurés aux emplacements appropriés, tout en n'utilisant qu'une fraction de l'espace disque pour les archives de sauvegarde.

Configurer la connexion au démon de stockage

Dans le fichier de configuration de Bacula Director, la ressource de stockage définit le démon de stockage auquel le directeur doit se connecter. Nous allons configurer le démon de stockage dans un instant.

Recherchez la ressource de stockage et remplacez la valeur de l'adresse,localhost, par le FQDN privé (ou l'adresse IP privée) de votre serveur de sauvegarde. Cela devrait ressembler à ceci (remplacez le mot en surbrillance):

bacula-dir.conf — Update Storage Address

Storage {
  Name = File
# Do not use "localhost" here
  Address = backup_server_private_FQDN                # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
  Device = FileStorage
  Media Type = File
}

Cela est nécessaire car nous allons configurer le démon de stockage pour qu’il écoute sur l’interface réseau privée, afin que les clients distants puissent s'y connecter.

Configurer le pool

Une ressource de pool définit l'ensemble de stockage utilisé par Bacula pour écrire des sauvegardes. Nous utiliserons les fichiers comme volumes de stockage et nous mettrons simplement à jour l'étiquette afin que nos sauvegardes locales soient correctement étiquetées.

Recherchez la ressource de pool nommée «Fichier» (sous un commentaire «# Définition du pool de fichiers»), puis ajoutez une ligne spécifiant un format d’étiquette. Cela devrait ressembler à ça quand vous aurez fini:

bacula-dir.conf — Update Pool:

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Label Format = Local-
  Recycle = yes                       # Bacula can automatically recycle Volumes
  AutoPrune = yes                     # Prune expired volumes
  Volume Retention = 365 days         # one year
  Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
  Maximum Volumes = 100               # Limit number of Volumes in Pool
}

Sauvegarder et quitter. Vous avez enfin terminé la configuration de Bacula Director.

Vérifier la configuration du directeur:

Vérifions qu’il n’ya pas d’erreur de syntaxe dans votre fichier de configuration de Director:

sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

S'il n'y a pas de message d'erreur, votre fichierbacula-dir.conf ne contient aucune erreur de syntaxe.

Ensuite, nous allons configurer le démon de stockage.

Configurer le démon de stockage

Notre serveur Bacula est presque configuré, mais nous avons toujours besoin de configurer le démon de stockage. Bacula sait donc où stocker les sauvegardes.

Ouvrez la configuration SD dans votre éditeur de texte préféré. Nous allons utiliser vi:

sudo vi /etc/bacula/bacula-sd.conf

Configurer la ressource de stockage

Trouvez la ressource de stockage. Ceci définit où le processus SD écoutera les connexions. Ajoutez le paramètreSDAddress et affectez-le au FQDN privé (ou à l'adresse IP privée) de votre serveur de sauvegarde:

bacula-sd.conf — update SDAddress

Storage {                             # definition of myself
  Name = BackupServer-sd
  SDPort = 9103                  # Director's port
  WorkingDirectory = "/var/lib/bacula"
  Pid Directory = "/var/run/bacula"
  Maximum Concurrent Jobs = 20
  SDAddress = backup_server_private_FQDN
}

Configurer le périphérique de stockage

Ensuite, recherchez la ressource Device nommée «FileStorage» (recherchez «FileStorage») et mettez à jour la valeur deArchive Device pour qu'elle corresponde à votre répertoire de sauvegardes:

bacula-sd.conf — update Archive Device

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /bacula/backup
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

Sauvegarder et quitter.

Vérifier la configuration du démon de stockage

Vérifions qu’il n’ya pas d’erreur de syntaxe dans votre fichier de configuration du Storage Daemon:

sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

S'il n'y a pas de message d'erreur, votre fichierbacula-sd.conf ne contient aucune erreur de syntaxe.

Nous avons terminé la configuration de Bacula. Nous sommes prêts à redémarrer les composants du serveur Bacula.

Redémarrez Bacula Director et Storage Daemon

Pour appliquer les modifications de configuration que vous avez apportées, redémarrez Bacula Director et Storage Daemon avec les commandes suivantes:

sudo service bacula-director restart
sudo service bacula-sd restart

Maintenant que les deux services ont été redémarrés, testons qu’il fonctionne en exécutant un travail de sauvegarde.

Tester le job de sauvegarde

Nous utiliserons la console Bacula pour exécuter notre premier travail de sauvegarde. S'il fonctionne sans problème, nous saurons que Bacula est configuré correctement.

Maintenant, entrez dans la console avec cette commande:

sudo bconsole

Cela vous mènera à l'invite de la console Bacula, indiquée par une invite*.

Créer une étiquette

Commencez par émettre une commandelabel:

label

Vous serez invité à entrer un nom de volume. Entrez le nom de votre choix:

Enter new Volume name:MyVolume

Ensuite, sélectionnez le pool que la sauvegarde doit utiliser. Nous allons utiliser le pool «Fichier» que nous avons configuré précédemment, en entrant «2»:

Select the Pool (1-3):2

Exécuter manuellement le travail de sauvegarde

Bacula sait maintenant comment nous voulons écrire les données pour notre sauvegarde. Nous pouvons maintenant exécuter notre sauvegarde pour vérifier son bon fonctionnement:

run

Vous serez invité à sélectionner le travail à exécuter. Nous voulons exécuter le travail “BackupLocalFiles”, entrez donc “1” à l'invite:

Select Job resource (1-3):1

À l'invite de confirmation «Exécuter le travail de sauvegarde», passez en revue les détails, puis entrez «oui» pour exécuter le travail:

yes

Vérifier les messages et le statut

Après avoir exécuté un travail, Bacula vous dira que vous avez des messages. Les messages sont générés par les travaux en cours.

Vérifiez les messages en tapant:

messages

Les messages doivent indiquer «Aucun enregistrement de travail de sauvegarde complet précédent n'a été trouvé» et que le travail de sauvegarde a démarré. S'il y a des erreurs, quelque chose ne va pas et elles devraient vous indiquer pourquoi le travail n'a pas été exécuté.

Une autre façon de voir le statut du travail consiste à vérifier le statut du directeur. Pour ce faire, entrez cette commande à l'invite bconsole:

status director

Si tout fonctionne correctement, vous devriez voir que votre travail est en cours d'exécution. Quelque chose comme ça:

Output — status director (Running Jobs)Running Jobs:
Console connected at 09-Apr-15 12:16
 JobId Level   Name                       Status
======================================================================
     3 Full    BackupLocalFiles.2015-04-09_12.31.41_06 is running
====

Lorsque votre travail est terminé, il passe à la section "Travaux terminés" du rapport d'état, comme suit:

Output — status director (Terminated Jobs)Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
     3  Full    161,124    877.5 M  OK       09-Apr-15 12:34 BackupLocalFiles

Le statut «OK» indique que le travail de sauvegarde s'est exécuté sans problème. Toutes nos félicitations! Vous avez une sauvegarde de l'ensemble complet de votre serveur Bacula.

L'étape suivante consiste à tester le travail de restauration.

Tester le job de restauration

Maintenant qu'une sauvegarde a été créée, il est important de vérifier qu'elle peut être restaurée correctement. La commanderestore nous permettra de restaurer les fichiers qui ont été sauvegardés.

Exécuter tout le travail de restauration

Pour démontrer, nous allons restaurer tous les fichiers dans notre dernière sauvegarde:

restore all

Un menu de sélection apparaît avec de nombreuses options permettant d'identifier le jeu de sauvegarde à restaurer. Étant donné que nous n'avons qu'une seule sauvegarde, sélectionnons la «sauvegarde la plus récente» - sélectionnez l'option 5:

Select item (1-13):5

Comme il n'y a qu'un seul client, le serveur Bacula, il sera automatiquement sélectionné.

L'invite suivante vous demandera quel FileSet vous souhaitez utiliser. Sélectionnez "Ensemble complet", qui devrait être 2:

Select FileSet resource (1-2):2

Cela vous déposera dans une arborescence de fichiers virtuelle avec toute la structure de répertoires que vous avez sauvegardée. Cette interface de type shell permet aux commandes simples de marquer et de désélectionner les fichiers à restaurer.

Parce que nous avons spécifié que nous voulions “tout restaurer”, chaque fichier sauvegardé est déjà marqué pour la restauration. Les fichiers marqués sont indiqués par un caractère* au début.

Si vous souhaitez affiner votre sélection, vous pouvez naviguer et répertorier les fichiers avec les commandes «ls» et «cd», marquer les fichiers pour restauration avec «marquer», et désélectionner les fichiers avec «désélectionner». Une liste complète des commandes est disponible en tapant «help» dans la console.

Lorsque vous avez terminé votre sélection de restauration, continuez en tapant:

done

Confirmez que vous souhaitez exécuter le travail de restauration:

OK to run? (yes/mod/no):yes

Vérifier les messages et le statut

Comme pour les tâches de sauvegarde, vous devez vérifier les messages et l’état de Director après avoir exécuté une tâche de restauration.

Vérifiez les messages en tapant:

messages

Il devrait y avoir un message indiquant que le travail de restauration a démarré ou s'est terminé avec le statut «Restaurer OK». S'il y a des erreurs, quelque chose ne va pas et elles devraient vous indiquer pourquoi le travail n'a pas été exécuté.

Là encore, vérifier le statut de directeur est un excellent moyen de connaître l'état d'un travail de restauration:

status director

Lorsque vous avez terminé la restauration, tapezexit pour quitter la console Bacula:

exit

Vérifier la restauration

Pour vérifier que le travail de restauration a réellement restauré les fichiers sélectionnés, vous pouvez consulter le répertoire/bacula/restore (qui a été défini dans le travail «RestoreLocalFiles» dans la configuration de Director):

sudo ls -la /bacula/restore

Vous devriez voir des copies restaurées des fichiers dans votre système de fichiers racine, à l'exclusion des fichiers et des répertoires répertoriés dans la section "Exclure" du travail "RestoreLocalFiles". Si vous tentiez de récupérer d'une perte de données, vous pouvez copier les fichiers restaurés à leurs emplacements appropriés.

Supprimer les fichiers restaurés

Vous voudrez peut-être supprimer les fichiers restaurés pour libérer de l'espace disque. Pour ce faire, utilisez cette commande:

sudo -u root bash -c "rm -rf /bacula/restore/*"

Notez que vous devez exécuter cette commanderm en tant que root, car la plupart des fichiers restaurés appartiennent à root.

Conclusion

Vous avez maintenant une configuration de base Bacula qui peut sauvegarder et restaurer votre système de fichiers local. L'étape suivante consiste à ajouter vos autres serveurs en tant que clients de sauvegarde afin que vous puissiez les récupérer en cas de perte de données.

Le prochain tutoriel vous montrera comment ajouter vos autres serveurs distants en tant que clients Bacula:How To Back Up an Ubuntu 14.04 Server with Bacula.

Related