Outils pour utilisateurs

Outils du site


informatique:linux:bacula_-_backup

Bacula est un jeu de programmes qui vous permet (ou à l'administrateur système) de faire des sauvegardes, restaurations, et vérifications des données d'un ordinateur sur un réseau hétérogène. Bacula peut fonctionner complètement sur un seul ordinateur. Il est capable de sauvegarder sur des supports variés, y compris disques et cartouches.

En termes techniques, il s'agit d'un programme de sauvegarde Client/Serveur. Bacula est relativement facile d'utilisation et efficace, tout en offrant de nombreuses fonctions avancées de gestion de stockage qui facilitent la recherche et la restauration de fichiers perdus ou endommagés. Grâce à sa conception modulaire, Bacula est échelonnable depuis le simple système constitué d'un ordinateur, jusqu'au système de plusieurs centaines d'ordinateurs disséminés sur un vaste réseau.

Je dois avouer que la configuration de Bacula m'a fait passer plusieurs soirées seul devant mon écran à crier sur quiconque passé derrière moi. :-X
Ayant déjà subit les ravages de Bacula, j'espère pouvoir vous éviter la crise.

Les fichiers de configuration de Bacula se trouvent dans le répertoire “/etc/bacula/”, en listant le contenu de ce répertoire vous trouverez quatre fichiers de configuration qui nous intéresse (ainsi qu'un répertoire est deux autres fichiers) :

Sur le serveur

  1. bacula-dir.conf = Fichier de configuration du “Bacula Director”.
  2. bacula-sd.conf = Fichier de configuration du “Bacula Storage”.
  3. bconsole.conf = Fichier de configuration de la “Bacula Console”.

Sur les clients

  1. bacula-fd.conf = Fichier de configuration du “Bacula Client”.

Piqure de rappel.

Bacula Director

  • Il gère les tâches (job)
  • Il gère les planifications des tâches (schedule)
  • Il gère les serveurs à sauvegarder (client)
  • Il gère les médias ou seront sauvegarder les fichiers (pool, storage)
  • Il gère les fichiers à sauvegarder (fileset)
  • Il gère les messages (message)
  • Il gère les catalogues (catalog)

Les liens indiqués dans cette liste peuvent devenir obsolètes.

Bacula Storage

  • Le daemon “bacula-sd” stocke et récupère les fichiers sur le support physique (Doc sur le Storage).

Bacula Client

  • Le daemon “bacula-fd” est installé sur les serveurs à sauvegarder (Doc sur le Filer.
  • Il sauvegarde les fichiers et se charge de les envoyer sur le “Director”.

Configuration

Pour des questions de lisibilité, j'ai décidé de découper le fichier de configuration principale (bacula-dir.conf) en plusieurs parties comme ci-dessous :

  • clients.conf” : Contient les machines distantes à sauvegarder.
  • filesets.conf” : Contient les directives sur les fichiers à sauvegarder ou à exclure.
  • jobs.conf” : Contient la liste des jobs à déclencher.
  • messages.conf” : Contient la forme des messages qui seront envoyés ainsi que leurs destinataires.
  • pools.conf” : Contient la liste des volumes à utiliser lors de la sauvegarde
  • schedules.conf” : Contient les planifications qui seront utilisées par les jobs.
  • storages.conf” : Contient la liste des storages à utiliser.

Pour résumé :

Le FileSet = "Que sauvegarder ?", Le Client = "Qui sauvegarder ?", Le Schedule = "Quand sauvegarder ?", Le Pool = "Sur quel volume sauvegarder ?"

Tous ces fichiers se trouvent dans “/etc/bacula/conf.d/”; “conf.d” est un répertoire que j'ai créé. Donc :

# mkdir /etc/bacula/conf.d/

bacula-sd.conf

Passons à la configuration du Storage, comme dit au début de ce document, le fichier qui nous intéresse est “/etc/bacula/bacula-sd.conf”.

#
# Informations relatives au Storage.
#
Storage {
	# Nom du Storage. "localhost" peut poser problème.
	Name = backup01.goldzoneweb.info-sd
 
	# Port utilisé par le Storage.
	SDPort = 9103
 
	# Répertoire ou seront stockés les fichiers de travail de Bacula entre autre le catalogue.
	WorkingDirectory = "/var/lib/bacula"
 
	# Répertoire ou seront créés les ID des processus daemon Bacula (director, storage, filer).
	Pid Directory = "/var/run/bacula"
 
	# Nombre de jobs pouvant-être exécutés simultanément.
	Maximum Concurrent Jobs = 20
        }
#
# Liste des Directors qui sont autorisés à se connecter au Storage.
#
Director {
	# Nom du Director. "localhost" peut poser problème.
	Name = backup01.goldzoneweb.info-dir
 
	# Mot de passe qui sera utilisé par le storage et par le filer (client) pour se connecter au Director.
	Password = "44kjMmUSo-a9nnL_RhbZgYxwEQ7bLmjX6"
        }
#
# Director restreint utilisée par le "tray-monitor" afin d'obtenir des informations sur l'état du Storage.
#
Director {
	# Nom du Director. "localhost" peut poser problème.
	Name = backup01.goldzoneweb.info-mon
 
	# Mot de passe qui sera utilisé se pour connecter à ce Director.
	Password = "JNxhVmxe9RJqtqlFEPTxlt0LRTqBeZl6F"
 
	# Activation du monitoring.
	Monitor = yes
        }
#
# Support ou seront stocker les fichiers sauvegardés.
#
Device {
	# Nom du stockage qui sera utilisé dans la directive Storage de chaque job.
	Name = File
 
	# Type de media qui sera utilisé, "File" n'est pas une obligation.
	# Il est tout à fait possible de mettre "DisqueDur", cependant "File" est représentatif du type \
	# de media utilisé à savoir un disque dur.
	Media Type = File
 
	# Répertoire ou seront stockés les fichiers et répertoires sauvegardés sous forme de volume.
	Archive Device = /home/bacula/
 
	# Cette directive permet d'étiqueter automatiquement un média (à savoir notre disque dur).
	# Sans cela, l'administrateur devra se connecter à la console pour ensuite lancer la commande "label".
	# Il est recommandé de l'activer pour les médias de type disque dur.
	LabelMedia = yes;
 
	# Support de la commodité lseek() permettant de lire les informations d'un fichier.
	Random Access = Yes;
 
	# Autorise Bacula à accéder automatiquement au volume.
	AutomaticMount = yes;
 
	# Dans notre cas cette option doit restée à "no". Cette dernière n'est a utiliser \
	# uniquement pour des médias amovibles (disquette, cdrom, bande, etc...).
	RemovableMedia = no;
 
	# Comme pour "RemovableMedia", cette directive est surtout appréciée pour les médias amovibles \
	# elle évite par exemple qu'une bande soit rembobinée dès que Bacula n'en a plus besoin.
	AlwaysOpen = no;
        }
#
# Envoie tous les messages au Director.
#
Messages {
	Name = Daemon
	director = backup01.goldzoneweb.info-dir = all
         }

La liste des directives pour la ressource Storage est disponible à cette adresse : http://www.bacula.org/fr/dev-manual/Configuratio_Storage_Daemon.html

bacula-dir.conf

Maintenant que nous avons décrit l'environnement dans lequel nous allons effectuer la configuration de Bacula, nous pouvons passer à la configuration du Director.
Cette dernière s'effectue dans le fichier “/etc/bacula/bacula-dir.conf”.

#
# Informations relatives au Director.
#
Director {
	# Nom du Director. "localhost" peut poser problème.
	Name = thales.0pb.org-dir
 
	# Port utilisé par le Director.
	DIRport = 9101
 
	# Fichier contenant des requêtes SQL pouvant être utilisées.
	# Par défaut ce fichier est vide mais cette directive doit-être présente.
	QueryFile = "/etc/bacula/scripts/query.sql"
 
	# Répertoire ou seront stockés les fichiers de travail de Bacula entre autre le catalogue.
	WorkingDirectory = "/var/lib/bacula"
 
	# Répertoire ou seront créés les ID des processus daemon Bacula (director, storage, filer).
	PidDirectory = "/var/run/bacula"
 
	# Nombre de jobs pouvant-être exécutés simultanément.
	Maximum Concurrent Jobs = 20
 
	# Mot de passe qui sera utilisé par le storage et par le filer (client) pour se connecter au director.
	Password = "S8jSXrIaGjucBQlFuEhmbp2jVEXf3r1v"
 
	# Redirection des messages vers le director.
	Messages = Daemon
        }
 
# Inclusion de tous les fichiers de configuration présents dans "/etc/bacula/conf.d/"
@|"sh -c 'for FILE in /etc/bacula/conf.d/*.conf ; do echo @${FILE} ; done'"
 
#
# Le catalogue contient le nom de tous les fichiers sauvegardés.
#
Catalog {
	# Nom du catalogue (ici rien de bien original). :)
	Name = Catalogue
 
	# A décommenter si vous souhaitez utiliser le module DBI pour vous connecter à la base de données.
	#dbdriver = "dbi:mysql"; dbaddress = 127.0.0.1; dbport = 3306
 
	# Informations de connexion à la base de données "bacula".
	dbname = bacula; DB Address = "sql.goldzoneweb.info"; dbuser = "bacula"; dbpassword = "*****"
        }
#
# Console restreinte utilisée par le "tray-monitor" afin d'obtenir des informations sur l'état du Director.
#
Console {
	# Nom de la console.
	Name = thales.0pb.org-mon
 
	# Mot de passe qui sera utilisé pour se connecter à cette console.
	Password = "OISF_enTkinz5ZCOXQm_Mev6DYeRkGkbF"
 
	# La console a uniquement le droit le lancer la commande "status".
	CommandACL = status, .status
        }

La liste des options pour le Director est disponible à cette adresse : http://www.bacula.org/fr/dev-manual/Configurer_Director.html

Bacula.dir Extension

La configuration du Storage étant finalisée, il nous reste à finaliser la configuration du Director. En effet si vous vous souvenez, nous avons vu plus haut que la configuration du Director avait été découpée pour facilité la compréhension.

filesets.conf

filesets.conf
#
# Fichiers qui seront à sauvegarder lors de la sauveagrde totale du serveur.
#
FileSet {
	# Nom de notre FileSet qui sera appelé dans les jobs.
	Name = "Totale"
 
	# Fichiers à sauvegarder ainsi que quelques options.
	Include {
		Options {
			# Tous les fichiers seront chiffrés en SHA1.
			signature = SHA1
 
			# Compression des fichiers.
			compression = GZIP9
 
			# Permet de sauvegarder plusieurs systèmes de fichiers.
			onefs = no
 
			# Sauvegarde des ACL.
			aclsupport = yes
		}
 
		# Tous les fichiers depuis "/" (la racine) seront sauvegardés.
		File = /
	}
 
	# Fichier qui seront exclus de la sauvegarde.
	Exclude {
		File = /proc
		File = /sys
		File = /tmp
		File = /dev
		File = /.journal
		File = /.fsck
		File = /var/www/tmp
		File = /var/www/logs_apache2
		File = /var/www/logs_proftpd
	        }
        }
#
# Fichiers qui seront à sauvegarder lors de la sauvegarde incrémentale du serveur.
#
FileSet {
	# Nom de notre FileSet qui sera appelé dans les jobs.
	Name = "Incrementale"
 
	# Fichiers à sauvegarder ainsi que quelques options.
	Include {
		Options {
			# Tous les fichiers seront chiffrés en SHA1.
			signature = SHA1
 
			# Compression des fichiers.
			compression = GZIP9
 
			# Permet de sauvegarder plusieurs systèmes de fichiers.
			onefs = no
 
			# Sauvegarde des ACL.
			aclsupport = yes
		}
 
		# Tous les fichiers depuis "/var/www/" seront sauvegardés.
		File = /var/www/
	}
 
	# Fichier qui seront exclus de la sauvegarde.
	Exclude {
		File = /var/www/tmp
		File = /var/www/logs_apache2
		File = /var/www/logs_proftpd
	}
}
 
#
# Sauvegarde du catalogue Bacula.
#
FileSet {
	# Nom de notre FileSet qui sera appelé dans les jobs.
	Name = "Catalogue"
 
	# Fichier SQL à sauvegarder ainsi que quelques options.
	Include {
		Options {
			# Le fichier sera chiffré en SHA1.
			signature = SHA1
		}
 
		# Fichier qui sera sauvegardé.
		File = "/var/lib/bacula/bacula.sql"
	}
}

La liste des options pour le FileSet est disponible à cette adresse : Configurer_Director

jobs.conf

jobs.conf
#
# Template pour la sauvegarde incrémentale.
#
JobDefs {
	# Nom du template qui sera appelé dans le job.
	Name = "Incrementale"
 
	# Type du job (Backup, Restore, etc...).
	Type = Backup
 
	# Type de sauvegarde à effectuer (Full, Incrementale, etc...)
	Level = Incremental
 
	# Fichiers qui seront sauvegardés par ce job.
	FileSet = "Incrementale"
 
	# Planification du job.
	Schedule = "WeeklyCycle"
 
	# Les fichiers seront sauvegardés sur le Storage "File".
	Storage = File
 
	# Les messages concernant ce job seront envoyés au Director dans la section "Standard" de la directive "Message".
	Messages = Standard
 
	# Type de pool qui sera utilisé par ce job.
	Pool = SauvegardeIncrementale
 
	# Priorité d'exécution du job lorsqu'il est en file d'attente.
	# Par défaut la priorité est de 10.
	Priority = 10
 
	# Fichier permettant de restaurer les fichiers sur un serveur.
	# Ce fichier peut-être une alternative à un catalogue erroné.
	Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
 
#
# Template pour la sauvegarde totale.
#
JobDefs {
	# Nom du template qui sera appelé dans le job.
	Name = "Totale"
 
	# Type du job (Backup, Restore, etc...).
	Type = Backup
 
	# Type de sauvegarde à effectuer (Full, Incrementale, etc...).
	Level = Full
 
	# Fichiers qui seront sauvegardés par ce job.
	FileSet = "Totale"
 
	# Les fichiers seront sauvegardés sur le Storage "File".
	Storage = File
 
	# Les messages concernant ce job seront envoyés au Director dans la section "Standard" de la directive "Message".
	Messages = Standard
 
	# Type de pool qui sera utilisé par ce job.
	Pool = SauvegardeTotale
 
	# Priorité d'exécution du job lorsqu'il est en file d'attente.
	# Par défaut la priorité est de 10.
	Priority = 10
 
	# Fichier permettant de restaurer les fichiers sur un serveur.
	# Ce fichier peut-être une alternative à un catalogue erroné.
	Write Bootstrap = "/var/lib/bacula/%c.bsr"
}
 
#
# Template pour la sauvegarde d'un catalogue. 
#
JobDefs {
	# Nom du template qui sera appelé dans le job.
	Name = "Catalogue"
 
	# Type du job (Backup, Restore, etc...).
	Type = Backup
 
	# Type de sauvegarde à effectuer (Full, Incrementale, etc...).
	Level = Full
 
	# Serveur ou se trouve le catalogue.
	Client = backup01.goldzoneweb.info
 
	# Fichiers qui seront sauvegardés par ce job.
	FileSet = "Catalogue"
 
	# Les fichiers seront sauvegardés sur le Storage "File".
	Storage = File
 
	# Les messages concernant ce job seront envoyés au Director dans la section "Standard" de la directive "Message".
	Messages = Standard
 
	# Type de pool qui sera utilisé par ce job.
	Pool = SauvegardeCatalogue
}
 
#
# Template pour la restauration. 
#
JobDefs {
	# Nom du template qui sera appelé dans le job.
	Name = "Restauration"
 
	# Type du job (Backup, Restore, etc...).
	Type = Restore
 
	# Fichiers qui seront restaurés.
	FileSet = "Totale"
 
	# Les fichiers seront sauvegardés sur le Storage "File".
	Storage = File
 
	# Les messages concernant ce job seront envoyés au Director dans la section "Standard" de la directive "Message".
	Messages = Standard
 
	# Type de pool qui sera utilisé par ce job.
	Pool = SauvegardeTotale
}
 
#
# Sauvegarde Totale
#
Job {
	# Nom du job.
	Name = "Totale"
 
	# JobDefs (template) à utiliser.
	JobDefs = "Totale"
 
	# Serveur sur lequel se déclenchera le job.
	Client = Cartman
 
	# Délai d'attente des ressouces ou Client de 2 minutes.
	# C'est à dire que si un client mais du temps à répondre à la requête alors il a 2 minutes.
	Max Wait Time = 2 minutes
}
 
#
# Sauvegarde incrémentale.
#
Job {
	# Nom du job.
	Name = "Incrementale"
 
	# JobDefs (template) à utiliser.
	JobDefs = "Incrementale"
 
	# Serveur sur lequel se déclenchera le job.
	Client = Cartman
 
	# Délai d'attente des ressouces ou Client de 2 minutes.
	# C'est à dire que si un client mais du temps à répondre à la requête alors il a 2 minutes.
	Max Wait Time = 2 minutes
}
 
#
#  Job de sauvegarde du catalogue.
#
Job {
	# Nom du job.
	Name = "SauvegardeCatalogue"
 
	# JobDefs (template) à utiliser.
	JobDefs = "Catalogue"
 
	# Planification du job.
	Schedule = "WeeklyCycleAfterBackup"
 
	# Script de sauvegarde du catalogue (lance un "mysqldump").
	# "Catalogue" étant le nom du catalogue à sauvegarder (voir la configuration dabs "bacula-dir").
	RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl Catalogue"
 
	# Supprime les copies du catalogue un fois la sauvegarde terminée.
	RunAfterJob  = "/etc/bacula/scripts/delete_catalog_backup"
 
	# Fichier permettant de restaurer le catalogue.
	Write Bootstrap = "/var/lib/bacula/Catalogue.bsr"
 
	# Priorité du job.
	# Ici la priorité est inférieure à un job standard ce qui aura \
	# pour incidence de mettre le job en attente tant que l'incrémentale, la totale, ou le différencielle \
	# ne sera pas terminé.
	Priority = 11
}
 
#
# Job de restauration des données. 
#
Job {
	# Nom du job.
	Name = "Restauration"
 
	# JobDefs (template) à utiliser.
	JobDefs = "Restauration"
 
	# Serveur sur lequel seront restaurées les données.
	Client = Cartman
 
	# Répertoire sur le serveur distant ou seront stockées les données restaurées.
	Where = /home/bacula/restore
}

La liste des directives pour les ressources Job et JobDefs sont disponibles à cette adresse : Configurer_Director

pools.conf

pools.conf
#
# Pool destiné à la sauvegarde totale.
#
Pool {
	# Nom du pool qui sera utilisé par les jobs.
	Name = SauvegardeTotale
 
	# Type de pool correspondant au job qui y sera exécuté.
	# Il peut y avoir plusieurs (un seul à la fois), Backup, Archive, Copy, etc...
	Pool Type = Backup
 
	# Permet à Bacula de ré-utiliser les volumes n'étant plus dans le catalogue.
	Recycle = yes
 
	# Fait le ménage dans le catalogue de Bacula en supprimant les jobs anciens.
	# Suite à cela ils pourront être recyclés (voir la directive précédente).
	AutoPrune = yes
 
	# Temps pendant lequel les jobs seront conservés dans les catalogues.
	# Arrivés à expération, il sera supprimé par la directive "AutoPrune" et ré-utilisés grace à la directive "Recycle".
	Volume Retention = 365 days
 
	# Nombre de volume autorisés par Pool, ci la valeur est à 0 alors il n'y a aucune limite.
	Maximum Volumes = 100
 
	# Format des noms des volumes.
	# Par exemple : GZW-Full-2010-07-03_23:20
	# La liste des variables sont disponibles ici : http://www.bacula.org/fr/dev-manual/Variable_Expansion.html#_ChapterStart50
	Label Format = "GZW-Full-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}"
}
 
#
# Pool destiné à la sauvegarde différencielle.
#
Pool {
	# Nom du pool qui sera utilisé par les jobs.
	Name = SauvegardeDifferencielle
 
	# Type de pool correspondant au job qui y sera exécuté.
	# Il peut y avoir plusieurs (un seul à la fois), Backup, Archive, Copy, etc...
	Pool Type = Backup
 
	# Permet à Bacula de ré-utiliser les volumes n'étant plus dans le catalogue.
	Recycle = yes
 
	# Fait le ménage dans le catalogue de Bacula en supprimant les jobs anciens.
	# Suite à cela ils pourront être recyclés (voir la directive précédente).
	AutoPrune = yes
 
	# Temps pendant lequel les jobs seront conservés dans les catalogues.
	# Arrivés à expération, il sera supprimé par la directive "AutoPrune" et ré-utilisés grace à la directive "Recycle".
	Volume Retention =  40 days
 
	# Format des noms des volumes.
	# Par exemple : GZW-Diff-2010-07-03_23:20
	# La liste des variables sont disponibles ici : http://www.bacula.org/fr/dev-manual/Variable_Expansion.html#_ChapterStart50
	Label Format = "GZW-Diff-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}"
}
 
#
# Pool destiné à la sauvegarde incrémentale.
#
Pool {
	# Nom du pool qui sera utilisé par les jobs.
	Name = SauvegardeIncrementale
 
	# Type de pool correspondant au job qui y sera exécuté.
	# Il peut y avoir plusieurs (un seul à la fois), Backup, Archive, Copy, etc...
	Pool Type = Backup
 
	# Permet à Bacula de ré-utiliser les volumes n'étant plus dans le catalogue.
	Recycle = yes
 
	# Fait le ménage dans le catalogue de Bacula en supprimant les jobs anciens.
	# Suite à cela ils pourront être recyclés (voir la directive précédente).
	AutoPrune = yes
 
	# Temps pendant lequel les jobs seront conservés dans les catalogues.
	# Arrivés à expération, il sera supprimé par la directive "AutoPrune" et ré-utilisés grace à la directive "Recycle".
	Volume Retention =  10 days
 
	# Format des noms des volumes.
	# Par exemple : GZW-Incr-2010-07-03_23:20
	# La liste des variables sont disponibles ici : http://www.bacula.org/fr/dev-manual/Variable_Expansion.html#_ChapterStart50
	Label Format = "GZW-Incr-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}"
}
 
#
# Pool destiné à la sauvegarde du catalogue.
#
Pool {
	# Nom du pool qui sera utilisé par les jobs.
	Name = SauvegardeCatalogue
 
 
	# Type de pool correspondant au job qui y sera exécuté.
	# Il peut y avoir plusieurs (un seul à la fois), Backup, Archive, Copy, etc...
	Pool Type = Backup
 
	# Permet à Bacula de ré-utiliser les volumes n'étant plus dans le catalogue.
	Recycle = yes
 
	# Fait le ménage dans le catalogue de Bacula en supprimant les jobs anciens.
	# Suite à cela ils pourront être recyclés (voir la directive précédente).
	AutoPrune = yes
 
	# Temps pendant lequel les jobs seront conservés dans les catalogues.
	# Arrivés à expération, il sera supprimé par la directive "AutoPrune" et ré-utilisés grace à la directive "Recycle".
	Volume Retention = 365 days
 
	# Nombre de volume autorisés par Pool, ci la valeur est à 0 alors il n'y a aucune limite.
	Maximum Volumes = 100 
 
	# Format des noms des volumes.
	# Par exemple : GZW-Catalogue-2010-07-03_23:20
	# La liste des variables sont disponibles ici : http://www.bacula.org/fr/dev-manual/Variable_Expansion.html#_ChapterStart50
	Label Format = "GZW-Catalogue-${Year}-${Month:p/2/0/r}-${Day:p/2/0/r}_${Hour:p/2/0/r}:${Minute:p/2/0/r}"
}
 
#
# Pool de secours.
#
Pool {
	# Nom du pool qui sera utilisé par les jobs.
	Name = Scratch
 
	# Type de pool correspondant au job qui y sera exécuté.
	# Il peut y avoir plusieurs (un seul à la fois), Backup, Archive, Copy, etc...
	Pool Type = Backup
}

La liste des options relatives à la ressource Pool est disponible à cette adresse : Configurer_Director
Une définition complète du pool “Scratch” est disponible ici

storage.conf

storages.conf
#
# Storages disponibles
#
Storage {
	# Nom du Storage qui sera appelé dans le job.
	Name = File
 
	# Adresse du Storage à utiliser, il est tout à fait possible d'avoir plusieurs serveurs \
	# ayant le daemon "bacula-sd" actif. Il est donc possible d'avoir un serveur n'ayant \
	# que des disques, un autre gérant un lecteur LTO, etc...
	# Il est préférable de ne pas mettre "localhost" si le "bacula-sd" tourne en local (ce qui est notre cas).
	Address = 192.168.0.3
 
	# Port d'écoute du storage.
	SDPort = 9103
 
	# Mot de passe pour se connecter au Director.
	Password = "ukHDHtRJ2MF7ZuEdwI0ynsnuS3DhRck6"
 
	# Nom du Storage qui a été défini dans le fichier "bacula-sd.conf"
	Device = FileStorage
 
	# Comme pour la directive du dessus il est nécessaire d'indiquer la même valeur \
	# que celle présente dans le fichier "bacula-sd.conf".
	Media Type = File
}

La liste des directives pour la ressource Storage est disponible à cette adresse : Configurer_Director

messages.conf

messages.conf
#
# Envoi des messages en rapport avec les jobs.
#
Messages {
	# Nom de la ressource "Message" qui sera utilisé par le Filer, Director, etc...
	Name = Standard
 
	# Commande utilisée par Bacula pour envoyer un mail.
	# Si cette dernière n'est pas présente alors la commande "mail" de Linux sera utilisée.
	# Les arguments "%r, %t, %c, etc..." sont indiqués dans la documentation.
	# L'option -h permet de spécifier le serveur SMTP, dans notre cas nous passerons par NullMailer (cf. sur le Wiki GoldZone Web).
	mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"
 
	# Identique à la commande ci-dessus mais destinée aux administrateurs de sauvegardes.
	operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
 
	# Adresse ou seront envoyés les messages exceptés les fichiers exclus dans notre FileSet.
	mail = administrateur@goldzoneweb.info = all, !skipped
 
	# Adresse email ou seront envoyés les messages en relation avec le montage d'un volume.
	operator = administrateur@goldzoneweb.info = mount
 
	# Les messages sont envoyés à la console Bacula, une fois que l'administrateur aura tapé "message" \
	# dans la console, ces derniers ne seront plus disponibles depuis la console.
	console = all, !skipped, !saved
 
	# Envoi les informations dans le fichier de log bacula excépté les fichiers exclus dans le FileSet.
	append = "/var/lib/bacula/log" = all, !skipped
 
	# Insert les événements dans le catalogue Bacula et plus précisement dans la table "Log".
	# Un log relatif à un job est supprimé lorsque le job référant est supprimé.
	catalog = all
}
 
#
# Envoi des messages en rapport avec les daemons Bacula.
#
Messages {
	# Nom de la ressource "Message" qui sera utilisé par le Filer, Director, etc...
	Name = Daemon
 
	# Commande utilisée par Bacula pour envoyer un mail.
	mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
 
	# Adresse ou seront envoyés les messages exceptés les fichiers exclus dans notre FileSet.
	mail = administrateur@goldzoneweb.info = all, !skipped
 
	# Les messages sont envoyés à la console Bacula, une fois que l'administrateur aura tapé "message" \
	# dans la console, ces derniers ne seront plus disponibles depuis la console.
	console = all, !skipped, !saved
 
	# Envoi les informations dans le fichier de log bacula excépté les fichiers exclus dans le FileSet.
	append = "/var/lib/bacula/log" = all, !skipped
}

Description des “options” utilisées dans la directive “mailcommand” :

  • %% = %
  • %c = Le nom du client
  • %d = Le nom du Director
  • %e = Le code de sortie du job (OK, Error, …)
  • %i = L'Id du Job
  • %j = Le nom unique du job
  • %l = Le niveau (Full, Differential, …) du job
  • %n = Le nom du job
  • %r = Les destinataires
  • %t = Le type du job (Backup, Verify, …)

La liste des options pour la directive Messages est disponible à cette adresse : ressource_Messages

clients.conf

clients.conf
#
# Serveur N°1 à sauvegarder.
#
Client {
	# Nom du serveur qui sera utilisé dans les jobs.
	Name = Cartman
 
	# Adresse du serveur (IP ou DNS).
	Address = 192.168.0.2
 
	# Port d'écoute du Filer (par défaut).
	FDPort = 9102
 
	# Catalogue à utiliser pour ce serveur.
	Catalog = Catalogue
 
	# Mot de passe du Director (obligatoire pour que le Filer puisse se connecter au Director).
	Password = "ukHDHtRJ2MF7ZuEdwI0ynsnuS3DhRck6"
 
	# Durée pendant laquelle les fichiers resteront renseignés dans le catalogue.
	File Retention = 30 days
 
	# Durée pendant laquelle les jobs resteront renseignés dans le catalogue.
	Job Retention = 6 months
 
	# Fait le ménage dans le catalogue de Bacula en supprimant les jobs anciens.
	AutoPrune = yes
}

La liste des directives pour la ressource Client est disponible à cette adresse : Configurer_Director

schedules.conf

schedules.conf
#
# Planification des sauvegardes.
#
Schedule {
	# Nom de la planification qui sera appelée dans le job.
	Name = "WeeklyCycle"
 
	# La sauvegarde totale se déroulera le premier dimanche du mois à 04h05 du matin.
	Run = Full 1st sun at 04:05
 
	# La sauvegarde différentielle se déroulera le seconde et cinquième dimanche du mois à 23h05.
	Run = Differential 2nd-5th sun at 23:05
 
	# La sauvegarde incrémentale se déroulera tous les soirs à partir de 23h05.
	Run = Incremental sun-sat at 23:05
}
 
#
# Sauvegarde du catalogue après le schedules "WeeklyCycle".
#
Schedule {
	# Nom de la planification qui sera appelée dans le job.
	Name = "WeeklyCycleAfterBackup"
 
	# Sauvegarde totale du catalogue tous les soirs à 23h10.
	Run = Full sun-sat at 23:10
}

La liste des directives pour la ressource Schedule est disponible à cette adresse : Configurer_Director

Les liens vers la documentation indiqués dans chacun de ces fichiers peuvent devenir obsolète, il sera donc nécessaire d'effectuer une petite recherche sur le site de Bacula.

bacula-fd.conf

Le “File Daemon” et son fichier de configuration /etc/bacula/bacula-fd.conf sont situés ensemble sur le ou les postes clients à sauvegarder.
Y sont définis, le nom de la ressource “FileDaemon” et le port sur lequel le contacter ainsi que les ressources “Director” autorisées à se connecter avec leurs identifiants et mots de passe respectifs.

La ressource Client

#la ressource FileDaemon
FileDaemon { 
            #Nom du client à sauvegarder
            Name = Example1
 
            #Port de communication avec le Director
            FDport = 9102 
 
            #Dossier des fichiers d'état du FileDaemon
            WorkingDirectory = /var/lib/bacula 
 
            #Dossier des fichiers d'identification des processus
            Pid Directory = /var/run/bacula 
 
            #Nombre maximum de Job simultanés
            Maximum Concurrent Jobs = 20 
 
            #Nom de domaine ou adresse IP du FileDaemon
            FDAddress = CLT-FD1  
            }
 

La ressource Director

Nous déclarons dans un premier temps une ressource “Director” autorisée à se connecter avec les pleins pouvoirs. Cette ressource est sollicitée pour effectuer le travail de sauvegarde des fichiers déclarés dans le “FileSet” de notre “Director” SRV-DIR. L'authentification se fait par login et mot de passe. Ce dernier correspond à celui déclaré dans la ressource “Client” du “Director” adéquate. Nous pourrions avoir plusieurs “Director” utilisant ce “File Daemon”.

Une ressource Director

Director {
          #Nom du Director établissant la connexion
          Name = SRV-DIR
 
          #Mot de passe de connexion identique à celui de la ressource Client du Director SRV-DIR
          Password = "qEGHFY6xRENSwwvWLGlJlfKqxPQJ9bgk-"
          }

Nous déclarons maintenant une autre ressource “Director” qui sera utilisée par l'application “Tray-Monitor”. C'est pourquoi nous activons la directive “Monitor en lui affectant la valeur “yes”. Cela va restreindre les droits pour ne permettre que le retour d'informations de statut.

Director {
          #Nom de cette ressource
          Name = CLT-FD1-MON  
 
          #Mot de passe de connexion
          Password = "qEGHFY6xRENSwwvWLGlJlfKqxPQJ9bgk-" 
 
          #Uniquement la lecture des fichiers d'état
          Monitor = yes
          }

La ressource Messages

Définit quels sont les messages systèmes à retourner au “Director”. Dans notre exemple, tous les messages sont renvoyés sauf ceux relatifs aux fichiers ignorés et restorés.

Un ressource Messages
Messages {
          #Nom de cette ressource
          Name = Standard  
 
          #Règles
          director = SRV-DIR = all, !skipped, !restored
          }

Démarrage

L'installation et la configuration du Director et du Storage étant terminée, il ne reste plus qu'à lancer les services.

Lancement du service “bacula-sd”:

# /etc/init.d/bacula-sd start

Lancement du service “bacula-dir” :

# /etc/init.d/bacula.dir start

<note>Source : goldzoneweb.info, Bacula.org,ubusite.fr</note>

informatique/linux/bacula_-_backup.txt · Dernière modification : 2022/04/10 17:26 de 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki