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.