Installation et configuration de Bacula

image.png

Aujourd’hui, réaliser des sauvegardes est une opération primordiale pour assurer la continuité de votre système d’information. Nous allons voir dans cet article comment mettre en place la solution Bacula, un outil open source qui va vous permettre de faire des sauvegardes.

Outils de sauvegarde Bacula

Présentation

Les raisons d’une perte de données sont nombreuses et peuvent arriver facilement: mauvaise manipulation, panne, virus, autant de raisons qui doivent vous convaincre de sauvegarder régulièrement vos données ! Bacula est un logiciel open source de sauvegarde professionnelle, si vous souhaitez en savoir plus sur les types de sauvegarde cliquez ici. Il permet de sauvegarder le contenu d’un ou de plusieurs PC en réseau. Nous allons voir dans ce tutoriel comment l’installer mais aussi comment sauvegarder et restaurer des données une machine Windows et une machine Linux.

Voici l'architecture réseau que nous allons mettre en place :

image.png

Voici le Product Breakdown Structure (fichier dans le google drive) : 

PBS.png

Voici le Working Breakdown Structure (fichier dans le google drive) :

 WBS.png

Fonctionnement

Il y a 4 fichiers de configuration différents :

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é.

Les ports utilisés par Bacula sont 9101 pour le director, 9102 pour le file et 9103 pour le storage.

Installation serveur

Ce tutoriel a été réalisé et testé sur les distributions Linux Ubuntu v16.04. Si vous avez besoin d’aide pour l’installation du système Ubuntu, vous pouvez consulter cet article. Nous allons installer les composants DIR et SD sur le même serveur. Sachez qu’il est possible de les installer sur deux serveurs différents si vous le souhaitez. Avant de commencer le tutoriel, mettez votre serveur à jour avec la commande suivante :

sudo apt-get update
sudo apt-get upgrade

Installation base SQL (pour Ubuntu 16.04)

Pour fonctionner, l’outil Bacula a besoin d’un serveur de base de données SQL. Lancez un terminal et entrez la commande ci-dessous pour installer MySQL :

sudo apt-get install mysql-server

La fenêtre suivante va s’ouvrir, entrez le mot de passe que vous souhaitez attribuer et confirmez celui-ci.

image.png

Votre serveur MySQL est maintenant installé.

Installation Bacula

Nous allons maintenant passer à l’installation de Bacula, entrez la commande suivante pour lancer l’installation :

sudo apt-get install bacula-server bacula-client

On installe le paquet bacula-serveur mais aussi  bacula-client cela va nous permettre de sauvegarder aussi notre serveur avec Bacula. Les prérequis vont être installés en même temps, comme Postfix. Faites OK sur la première fenêtre. Sélectionnez « Site Internet » sur la suivante puis faites OK.

image.png

Faites de nouveau OK sur la prochaine fenêtre. La page ci-dessous va apparaître saisissez votre nom de courriel et validez.

image.png

Durant l’installation, la fenêtre ci-dessous va apparaître (uniquement pour Ubuntu 16.04), sélectionnez OUI.

image.png

L’installation est terminée, nous allons passer à la configuration du serveur.

Configuration Bacula

Pour commencer, nous allons changer la permission sur les scripts de Bacula pour éviter des futurs problèmes de droit :

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

Nous allons créer les répertoires de sauvegarde et de restauration. Changez le propriétaire du répertoire /bacula et changez les droits sur celui-ci. Pour cela utilisez les commandes ci-dessous :

sudo mkdir -p /bacula/backup /bacula/restore
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Nous allons maintenant configurer le director, éditez le fichier de configuration avec cette commande :

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

Configurons ensuite les jobs. Un job est utilisé pour réaliser une sauvegarde ou une restauration. Cherchez dans le fichier la balise Job qui a pour nom « BackupClient1 », remplacez ce nom par « SauvegardeLocale ».

image.png
Maintenant cherchez la balise Job qui est nommée « RestoreFiles », remplacez cette valeur par « RestaurationLocale » et dans Where mettez la valeur « /bacula/restore ». Cela signifie que chaque restauration sera restaurée à cet emplacement.

image.png

Passons à la configuration des FileSet. Ils servent à définir des profils qui vont indiquer les emplacements à inclure ou à exclure de la sauvegarde. Dans le fichier, cherchez la balise FileSet ayant pour nom « Full Set ». Ajoutez la ligne compression, enregistrez l’ensemble du serveur en mettant « / » pour File et excluez de la sauvegarde « /bacula ».

image.png

Allez maintenant jusqu’à la balise nommée Storage, dans Address mettez l’adresse IP de votre serveur Bacula.

image.png

Descendez jusqu’à la balise Pool et ajoutez la ligne encadrée en rouge.

image.png

Sauvegardez le fichier et quittez. Vérifiez que vous n’avez pas fait d’erreur de syntaxe avec la commande suivante :

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

Cette commande ne doit rien vous renvoyer. Dans le cas contraire vérifiez votre fichier de configuration, vous avez du faire une erreur quelque part.

Il nous reste à effectuer la configuration du SD sur le serveur. Éditez le fichier de configuration du SD avec la commande suivante :

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

Dans la balise Storage, dans SDAddress renseignez l’IP de votre serveur.

image.png

Descendez ensuite jusqu’à la balise Device dans Archive Device entrez « /bacula/backup ».

image.png

Sauvegardez le fichier et quittez. Puis entrez la commande suivante pour vérifier si vous avez fait des erreurs de syntaxe :

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

Cette commande ne doit rien vous renvoyer, dans le cas contraire vérifiez votre fichier de configuration, vous avez du faire une erreur quelque part.

La configuration du director est terminée. Redémarrez le director et le sd afin de prendre les modifications en compte :

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

Configuration sauvegardes clientes

Serveur Bacula

Sauvegarde

Nous allons lancer une sauvegarde de notre serveur Bacula. Entrez la commande suivante pour entrer dans la console de l’outil :

bconsole

Puis entrez la commande suivante :

* label

Faites le choix 1 :

image.png

Entrez le nom de Volume que vous voulez et faites entrée. Sur la fenêtre suivante, faites le choix 2 :

image.png

Vous êtes maintenant connecté au SD de votre serveur, nous allons lancer un job de sauvegarde. Lancez la commande suivante :

* run

Faites le choix 1 :

image.png

Confirmez le lancement de la tâche en écrivant « yes » et en appuyant sur la touche entrée :

image.png

Votre job est lancé, utilisez la commande suivante pour le visualiser :

* status director

image.png

On peut voir que la sauvegarde est en cours. Patientez quelques minutes puis refaites cette même commande. Le job de sauvegarde est maintenant terminé.

image.png

Restauration

Nous allons faire une restauration de l’ensemble des fichiers de la sauvegarde que nous venons d’effectuer. Entrez la commande suivante dans la console de Bacula (bconsole).

* restore all

Faites le choix numéro 5 : « Select the most recent backup for a client ». Puis, toujours dans le terminal saisissez :

$ done

Un récapitulatif du job apparaît, saisissez « yes » pour le lancer :

image.png

Entrez la commande suivante pour visualiser l’avancement du job de restauration :

* status director

image.png

Une fois la restauration terminée, quittez la console avec la commande :

* exit

Entrez la commande suivante :

ls /bacula/restore

Vous verrez que les fichiers ont bien été restaurés.

Client Linux

Avant de commencer à configurer le client, nous allons créer un répertoire qui va nous permettre d’organiser les fichiers de configuration de Bacula. Sur le serveur, créez le répertoire :

sudo mkdir /etc/bacula/conf.d

Ouvrez le fichier de configuration du director :

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

A la fin du fichier, ajoutez la ligne suivante. Elle va permettre d’indiquer que le répertoire créé précédemment contient des fichiers de configuration additionnels :

@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"

Dans ce répertoire, créez le fichier suivant. Il sera utilisé pour configurer les sauvegardes distantes :

sudo nano /etc/bacula/conf.d/pools.conf

Ajoutez les lignes suivantes dedans, sauvegardez et quittez le fichier.

Pool {
Name = RemoteFile
Pool Type = Backup
Label Format = Remote-
Recycle = yes
AutoPrune = yes
Volume Retention = 365 days
Maximum Volume Bytes = 50G
Maximum Volumes = 100
}

Vérifiez qu’il n’y a pas d’erreur de syntaxe avec la commande suivante :

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

Sauvegarde

Nous avons fini la partie serveur, allez sur votre machine cliente. Avant tout mettez celle-ci à jour :

sudo apt update
sudo apt upgrade

Ensuite installez le paquet bacula-client sur celle-ci :

sudo apt-get install bacula-client

Une fois installé, ouvrez le fichier de configuration :

sudo nano /etc/bacula/bacula-fd.conf

Dans la balise Director, dans Name saisissez le nom de votre serveur Bacula (director). Vous allez avoir besoin du mot de passe plus tard, copiez le et gardez le de coté.

image.png

Descendez jusqu’à la balise FileDaemon, dans Name mettez le nom de votre client et dans FDaddress saisissez l’adresse IP du client Linux :

image.png

Allez jusqu’à la balise Messages et dans director mettez votre nom de director, puis sauvegardez et quittez le fichier :

image.png

Vérifiez que vous n’avez pas fait d’erreur de syntaxe avec la commande suivante :

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

Si vous n’avez pas d’erreur redémarrez le FD :

sudo service bacula-fd restart

Nous allons créer un dossier nommé « restore » dans lequel le serveur Bacula pourra restaurer les fichiers. Utilisez les commandes suivantes :

sudo mkdir -p /bacula/restore
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Nous avons fini la configuration sur le client Linux, retournez sur le serveur. Nous allons créer un Fileset pour indiquer les répertoires à sauvegarder sur notre client. Ouvrez le fichier filesets.conf :

sudo nano /etc/bacula/conf.d/filesets.conf

Nous allons sauvegarder uniquement le répertoire home. Ajoutez les lignes suivantes dans le fichier puis sauvegardez et quittez :

FileSet {
 Name = "Home"
 Include {
 Options {
 signature = MD5
 compression = GZIP
 }
 File = /home
 }
 Exclude {
 File = /home/bacula/
 }
 }

Nous allons maintenant ajouter le client Linux au serveur Bacula. Ouvrez le fichier suivant :

sudo nano /etc/bacula/conf.d/clients.conf

Ajoutez les lignes ci-dessous. Si vous avez utilisé les mêmes noms et IP que moi, ne modifiez pas les lignes sinon adaptez les valeurs en bleues à votre cas. Ces lignes vont configurer le client, le job de restauration et le job de sauvegarde. Dans le champ Password, mettez le mot de passe que vous aviez mis de coté lors de la configuration du client :

image.png

Vérifiez une nouvelle fois la syntaxe du fichier de configuration du director :

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

Redémarrez le director :

sudo service bacula-director restart

Nous allons maintenant tester la connexion avec le client, entrez dans la console de Bacula :

bconsole
* status client

Sélectionnez le choix 2 :

image.png

Le FD du client vous répond immédiatement sinon vous avez du faire une erreur. Vérifiez que le mot de passe et le nom sont identiques sur le serveur et le client.

Nous allons lancer une sauvegarde pour tester le bon fonctionnement du serveur. Toujours dans la console de Bacula, lancez la commande suivante :

* run

Vous aurez la liste des jobs, sélectionnez « 4: BackupClientLinux » et entrez « yes » pour lancer la sauvegarde. Suivez l’avancement avec la commande :

* status director

Restauration

Nous allons faire une restauration des fichiers de la sauvegarde que nous venons d’effectuer. Entrez la commande suivante dans la console de Bacula (bconsole) :

* restore all

Faites le choix numéro 5: « Select the most recent backup for a client ». Sélectionnez ensuite le client « ClientLinux-fd ». Toujours dans le terminal saisissez :

$ done

Faites le choix 2 pour lancer la restauration du client Linux.

Un récapitulatif du job apparaît, entrez « yes » pour le lancer :

image.png

Entrez la commande suivante pour visualiser l’avancement du job :

* status director

Une fois la restauration terminée, quittez Bacula avec la commande :

* exit

Entrez la commande suivante sur le client Linux :

ls /bacule/restore

Les fichiers ont bien été restaurés :

image.png

Sauvegarde avec Schedule

Les Schedules (Plannings) :

Les Schedules définissent quand et à quelle fréquence les tâches de sauvegardes doivent être exécutées.

Voici comment configurer un planning pour exécuter des sauvegardes tous les jours à 10h00 : 

Sur le serveur ouvrez le fichier de configuration du directeur Bacula :

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

Recherchez une section existante pour les Schedules ou ajouter une nouvelle section si elle n'existe pas et ajouter ceci pour planifier cette sauvegarde (pour le nom vous avez le choix) :

Schedule {
Name = “Thursday”
Run = Full mon-sun  at 10:00
}

Elle permettra de sauvegarder de "mon" lundi à "sun" dimanche à 10h.

Exemple :

image.png

Rentrez dans le fichier de configuration du client : 

sudo nano /etc/bacula/conf.d/clients.conf

Dans la section job entrez votre schedule comme cela : 

Job {
 Name = "Backupubuntu-client-eb1"
 JobDefs = "DefaultJob"
 Client = ubuntu-client-eb1-fd
 Pool = RemoteFile
 FileSet="Home"
 Schedule = "ToutLesJours"
 }

Enregistrez et fermer

Redémarrer le service Bacula Director pour appliquer les changements :

sudo service bacula-director restart

Sauvegarde complètes, différentielles et incrémentales

En résumé voici un tableau qui compare les différentes sauvegarde : 

image.png

Pour la partie configuration, nous revenons, comme précédemment mentionné, à la section "schedule". Cette section nous permet non seulement de configurer le planning des sauvegardes, mais également de spécifier le type de sauvegarde souhaité, qu'elle soit complète, incrémentale ou différentielle.

Pour exécuter une sauvegarde complète :

Schedule {
Name = “Thursday”
Run = Full mon-sun at 10:00
}

Pour exécuter une sauvegarde différentielle : 

Schedule {
Name = “Thursday”
Run = Differential mon-sun at 10:00
}

Pour exécuter une sauvegarde incrémentielle : 

Schedule {
Name = “Thursday”
Run = Incremental mon-sun at 10:00
}

Exemple de configuration pour une entreprise visant à automatiser les sauvegardes :

Schedule {
  Name = "Weekly"
  Run = Full run at 23:05
  Run = Differential mon-wed at 23:05
  Run = Differential fri at 23:05
}

Il s'agit d'une sauvegarde hebdomadaire permettant d'effectuer une sauvegarde complète le dimanche et une sauvegarde différentielle tous les jours, sauf le jeudi.

Exemple : 

image.png

Conclusion

Dans ce projet, j'ai réussi à mettre en place un système de sauvegarde et de restauration avec Bacula sur un serveur Ubuntu, en travaillant seul. En suivant les instructions d'installation et de configuration, j'ai appris à gérer efficacement les sauvegardes de données. Cette expérience m'a permis de développer mes compétences en autonomie et en gestion des données, ce qui sera précieux dans des contextes professionnels futurs.


Révision #15
Créé 28 mai 2024 09:55:06 par Clément Ménier
Mis à jour 6 juin 2024 22:07:49 par Clément Ménier