Installation et configuration de Bacula

Installation et configuration de Bacula

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.




 

Outil 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 que nous allons mettre en place:

*

Fonctionnement

Bacula est divisé en trois parties distinctes:

  • Le director (DIR) c’est le programme qui supervise toutes les opérations de sauvegarde, de restauration, de vérification et d’archivage. Le director est utilisé pour planifier les sauvegardes et restaurer les fichiers.
  • Le storage (SD), programme qui va effectuer des lectures et des écritures sur les périphériques de stockage utilisés pour les sauvegardes. Il gère les médias où sont écrites les données.
  • Le file (FD) qui gère la partie cliente est installé sur toutes les machines à sauvegarder. Le composant FD est un logiciel qui fournit au serveur Bacula (le director, en particulier) l’accès aux données qui seront sauvegardées.

 

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 et v18.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.

 

Votre serveur MySQL est maintenant installé.

 

Forcer utilisation base MySQL (pour Ubuntu 18.04)

A partir de la version Ubuntu 18.04, la base PostgreSQL est installée en même temps que le package bacula-serveur. Néanmoins si vous souhaitez utilisez une version MySQL plutôt que PostgreSQL, entrez les commandes suivantes:

apt-get install mysql-server
apt-get install bacula-director-mysql bacula-client

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

 

Si vous utilisez Ubuntu server 18.04, vous devrez sûrement modifier le fichier sources.list afin de pouvoir télécharger Bacula. Modifiez le fichier avec la commande suivante:

nano /etc/apt/sources.list

 

Puis ajoutez le contenu suivant au fichier:

deb http://fr.archive.ubuntu.com/ubuntu/ bionic main restricted
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
deb http://fr.archive.ubuntu.com/ubuntu/ bionic universe
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-updates universe
deb http://fr.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse

 

Utilisez ensuite les commandes ci-dessous pour que la modification soit prise en compte:

apt-get update
apt-get upgrade

 

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.

 

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

 

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

 

L’installation est terminée, nous allons passer à la configuration du serveur. Sur Ubuntu 18.04, vous devrez saisir un mot de passe pour PostgreSQL en plus.

 

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

 

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.

 

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

 

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

 

Si vous êtes sur Ubuntu v18.04 la balise se nommera Autochanger et non plus Storage.

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

 

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.

 

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

 

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:

sudo bconsole

 

Puis entrez la commande suivante:

* label

 

Faites le choix 1:

 

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

 

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:

 

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

 

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

* status director

 

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

 

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:

 

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

* status director

 

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-get update

 

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

 

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

 

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

 

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:

Client {
 Name = ClientLinux-fd
 Address = 192.168.153.15
 FDPort = 9102
 Catalog = MyCatalog
 Password = "WXiIU30GjQxzZyxjoQEvUUnYmwqSjJ9cp"
 File Retention = 30 days
 Job Retention = 6 months
 AutoPrune = yes
 }

Job {
 Name = "BackupClientLinux"
 JobDefs = "DefaultJob"
 Client = ClientLinux-fd
 Pool = RemoteFile
 FileSet="Home"
 }

Job {
 Name = "RestoreLinuxFiles"
 Type = Restore
 Client=ClientLinux-fd
 FileSet="Home"
 Storage = File1
 Pool = RemoteFile
 Messages = Standard
 Where = /bacula/restore
 }

 

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:

sudo bconsole
* status client

 

Sélectionnez le choix 2:

 

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:

 

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.

 

Client Windows

Sauvegarde

Pour sauvegarder notre client Windows, nous allons avoir besoin d’installer le FD spécifique à Windows. Téléchargez l’agent en cliquant sur un des liens suivants en fonction de votre système version 32 bits ou version 64 bits. Lancez l’installation. Cliquez sur Next sur la première page, puis acceptez la licence. Pour le type d’installation laissez « Automatic » et cliquez sur « Next ». Pour les composants, laissez Client et Consoles cochés et cliquez sur Next. Vous arriverez sur la fenêtre suivante:

Dans « DIR Name » entrez le nom que vous avez donné au director. En ce qui concerne « DIR Password » pour avoir le mot de passe, allez sur votre serveur Bacula et éditez le fichier suivant:

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

*

Descendez jusqu’à la balise Client du director et copiez ce mot de passe:

 

Collez le dans le champ DIR-Password de votre client Windows. Enfin, dans DIR address saisissez l’adresse IP de votre serveur Bacula et cliquez sur Install. Créez un dossier C:/restore sur le client Windows, c’est dans ce répertoire que les données seront restaurées. Désactivez le pare-feu ou configurez celui-ci en conséquence pour que la sauvegarde puisse se faire.

Retournez maintenant sur le serveur afin de configurer le client Windows. Tout d’abord, nous allons créer un FileSet dans lequel nous allons indiquer que seul C:/Users doit être sauvegardé. Pour cela ouvrez le fichier de configuration des FileSet:

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

 

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

FileSet {
  Name = "user"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
    File = C:/Users
  }
  Exclude {
    File = /home/bacula/
  }
}

 

Nous allons maintenant ajouter le client, ouvrez le fichier suivant:

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

 

Ajoutez les lignes suivantes dans le fichier. Adaptez les valeurs en bleues à votre cas. Pour le mot de passe, regardez sur votre machine cliente Windows dans C:/ vous aurez un fichier nommé « nom_machine-fd.conf ». Ouvrez le avec Bloc-Notes, copiez le mot de passe et collez le dans le champ Password.

Client {
  Name = client-pc-fd
  Address = 192.168.153.20
  FDPort = 9102
  Catalog = MyCatalog
  Password = "vbyBGvCjlK6XKUI3j7dG3QUW5tgf2IfC2Zarsp+1S5zq"     
  File Retention = 30 days
  Job Retention = 6 months
  AutoPrune = yes 
}

Job {
  Name = "BackupClientWindows"
  JobDefs = "DefaultJob"
  Client = client-pc-fd
  Pool = RemoteFile
  FileSet = "user"
}


Job {
  Name = "RestoreWindowsFiles"
  Type = Restore
  Client=client-pc-fd
  FileSet="user"
  Storage = File1
  Pool = RemoteFile
  Messages = Standard
  Where = C:/restore
}

 

La configuration est terminée, vérifiez que vous n’avez pas fait d’erreur de syntaxe et redémarrez le director:

sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
sudo service bacula-director restart

 

Testez la connexion avec le client:

sudo bconsole
* status client

 

Sélectionnez votre client Windows:

 

Nous allons maintenant lancer la sauvegarde, lancez:

* run

 

Sélectionnez « BackupClientWindows » et tapez « yes » pour confirmer l’opération:

 

Le job de sauvegarde se lance, patientez, votre client Windows est à présent sauvegardé.

 

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 Windows. Toujours dans le terminal saisissez:

done

 

Faites le choix 4 pour lancer la restauration du client Windows.

 

Un récapitulatif du job apparaît, entrez « yes » pour le lancer. Utilisez la commande suivante pour visualiser l’avancement du job:

* status director

 

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

* exit

 

Allez sur votre client Windows dans le dossier C:/restore, vos fichiers ont été restaurés.

 

Interface graphique

Vous avez la possibilité d’installer une console graphique sur Bacula. Installez le paquet suivant:

apt-get install bacula-console-qt

 

Une fois installée, lancez la console graphique avec la commande suivante:

bat -c /etc/bacula/bat.conf

 

Voici l’interface de Bacula:

 

Grâce à cet article, vous savez désormais comment installer la solution de sauvegarde Bacula. Vous avez aussi appris à sauvegarder des clients Linux et Windows et à restaurer des sauvegardes. N’hésitez pas à consulter mon article sur Bareos qui est un outil qui offre les même services que Bacula.

À propos de l’auteur

Vincent Krahenbuhl administrator

Passionné d’informatique, ma motivation et ma curiosité m’ont permis de réaliser des études en alternance. J’ai dans un premier temps exercé le poste de technicien informatique au sein du groupe Edscha. J’ai ensuite occupé un poste d’administrateur réseau puis je suis devenu ingénieur réseau et sécurité au sein de l’entreprise FM Logistic. Fort de ces expériences dans deux entreprises internationales, j’ai décidé de devenir Formateur Indépendant en Informatique.

13 commentaires pour l’instant

JeremPublié le3:14 - Mai 8, 2017

article très complet, super

NoamPublié le2:44 - Avr 4, 2018

Un grand merci, c’est super. A quand un autre tutoriel de ce genre? Je trouve que c’est très bien expliqué et très utile.

CoulibalPublié le2:24 - Avr 27, 2018

Merci, l’explication est simple et clair c’est super.

XavPublié le3:25 - Août 24, 2018

Bonjour,

E: Impossible de trouver le paquet bacula-server
E: Impossible de trouver le paquet bacula-client

Vous avez rajouté une autre source de dépôt ?

martialPublié le12:59 - Sep 5, 2018

très bon tutoriel.
s’il vous est ce que vous pouvez combiner cela avec une interface webmin?

    Vincent KrahenbuhlPublié le8:39 - Sep 5, 2018

    Bonjour,
    Merci pour votre retour. Pour intégrer Bacula dans webmin il existe un module dédié nommé « Bacula Backup System ». J’ai trouvé de la documentation mais je n’ai jamais eu l’occasion de tester personnellement, je vous conseille d’utiliser la console Bacula si vous souhaitez avoir une interface graphique.

FabienPublié le9:04 - Sep 12, 2018

Bonjour moi j’ai ça dès la première étape :

E: Impossible de trouver le paquet bacula-server
E: Impossible de trouver le paquet bacula-client

Help 🙁 ?

Med MouncefPublié le10:14 - Août 31, 2019

Bonjour. Tuto clair et utile. Mais la restauration tel que décrite dans la section « Configuration sauvegardes clientes »/ « Serveur Bacula » ne marche pas pour moi. J’obtiens toujours ce message : Fatal error: Storage daemon didn’t accept Device « FileChgr1 » command. Pourtant, je respecte à la lettre les instructions du tutoriel. Et j’ai bien cherché une solution sur internet mais je n’en trouve pas.
Pour information, j’ai un VPS Ubuntu Server 18.04.2 + LAMP + Webmin. Mon objectif est de faire des fichiers de sauvegardes de mon VPS pour les mauvais jours. J’ai un bakup space FTP indépendant que je n’utilise pas pour cette tâche pour l’instant en attendant de règler ce problème.
Merci d’avance pour votre aide.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.