%%
%%

\chapter{Adapter les fichiers de configuration}
\label{_ChapterStart16}
\index[general]{Adapter les fichiers de configuration }
\index[general]{Configuration!Adapter les fichiers de }

Lors de son d\'emarrage, chacun des programmes qui composent Bacula lit un
fichier de configuration sp\'ecifi\'e sur la ligne de commande, ou par
d\'efaut {\bf bacula-dir.conf}, {\bf bacula-fd.conf}, {\bf bacula-sd.conf}, ou
{\bf console.conf} pour le Director Daemon, le File Daemon, le Storage Daemon,
et le programme Console respectivement. 

Chaque service (Director, Client, Storage, Console) poss\`ede son propre
fichier de configuration qui contient un groupe de directives. Dans la suite,
nous d\'esignerons ces groupes de directives par le mot {\bf Ressource}. Les
ressources son tr\`es similaires d'un service \`a l'autre, mais peuvent
contenir des directives diff\'erentes selon les services. Par exemple, dans le
fichier de configuration du Director, la ressource {\bf Director} d\'efinit le
nom du Director, quelques param\`etres g\'en\'eraux du Director et son mot de
passe. Dans le fichier de configuration du File Daemon, la ressource {\bf
Director} sp\'ecifie les Directors autoris\'es \`a utiliser le File Daemon. 

Avant de lancer Bacula pour la premi\`ere fois, vous devez adapter chaque
fichier de configuration. Des fichiers de configuration auront \'et\'e
cr\'e\'es par le processus d'installation, mais il doivent \^etre modifi\'es
pour correspondre \`a votre syst\`eme. Le sch\'ema suivant donne une vue
globale des ressources. 

\includegraphics{./bacula-objects.eps}
\\
(Remerciements \`a Aristedes Maniatis pour ce sch\'ema.) 
\label{ResFormat}

\section{Jeu de caract\`eres}
\index[general]{Jeu de caract\`eres} 
Bacula est con{\c c}u pour prendre en charge la plupart des jeux de caract\`eres 
existant dans le monde : US ASCII, allemand, fran{\c c}ais, chinois... 
Cependant, ceci est r\'ealis\'e en encodant tout en UTF-8, et Bacula s'attend \`a 
ce que tous ses fichiers de configuration (y compris ceux r\'esidant sur les 
machines Win32) soient r\'edig\'es en UTF-8. UTF-8 est le format par d\'efaut sur 
la plupart des syst\`emes Linux, mais pas sur toutes les machines Unix, ni sur 
les machines Windows, aussi vous devez vous assurer que vos param\`etres 
locaux sont correctement r\'egl\'es avant d'utiliser Bacula.

Vous pouvez v\'erifier que les fichiers de configuration sont lisibles, y compris 
les caract\`eres \'etrangers en examinant votre variable d'environnement  {bf LANG}. 
Celle-ci doit se terminer par {\bf .UTF-8}. Par exemple {\bf en\_US.UTF-8}. 
La syntaxe exacte pour la d\'efinir peut varier fortement d'unsyst\`eme d'exploitation 
\`a l'autre. 

Bacula consid\`ere que tous les noms de fichiers sont au format UTF-8 sur les 
machines Unix et Linux. Sur les machines Windows, ils sont en UTF-16 
et sont automatiquement convertis en UTF-8.

\section{Format des directives}
\index[general]{Format des directives }
\index[general]{Directives!Format des }

Bien qu'il ne soit pas n\'ecessaire de conna{\^\i}tre le d\'etail de toutes
les directives possibles, une connaissance basique des ressources Bacula est
indispensable. Chaque directive contenue dans une ressource (entre accollades)
est compos\'e d'un mot-clef suivi du signe "='', suivi d'une ou plusieurs
valeurs. Le mot clef doit \^etre l'un de ceux connus par Bacula, et peut
comporter des caract\`eres majuscules et minuscules ainsi que des espaces. 

Chaque d\'efinition de ressource DOIT comporter la directive Name, et peut
optionnellement comporter la directive Description. La directive Name est
utilis\'ee pour identifier de fa{\c c}on unique la ressource. La directive
Description sera utilis\'e lors de l'affichage pour offrir une identification
plus ais\'ee de la ressource. Par exemple : 

\footnotesize
\begin{verbatim}
Director {
  Name = "MyDir"
  Description = "Main Bacula Director"
  WorkingDirectory = "$HOME/bacula/bin/working"
}
\end{verbatim}
\normalsize

D\'efinit la ressource Director avec le nom "MyDir'' et le r\'epertoire de
travail \$HOME/bacula/bin/working. En g\'en\'eral, si vous voulez utiliser des
espaces dans le nom \`a droite du signe "='', vous devez l'entourer de
doubles quotes. Sinon, les quotes ne sont g\'en\'eralement pas requises car
une fois d\'efinies, les cha{\^\i}nes quot\'ees et non quot\'ees sont toutes
\'equivalentes. 
\label{Comments}

\subsection{Commentaires}
\index[general]{Commentaires }

Lors de la lecture d'un fichier de configuration, les lignes blanches sont
ignor\'ees, et tout ce qui suit le caract\`ere di\`ese (\#) jusqu'\`a la fin
de la ligne est consid\'er\'e comme commentaire. Un point virgule (;) indique
la fin logique d'une ligne et tout ce qui suit le point virgule est
consid\'er\'e comme le param\`etre suivant. Un param\`etre qui appara{\^\i}t
seul sur une ligne ne n\'ecessite pas de point virgule, vous ne verrez donc
pas beaucoup de points virgule dans les exemples de ce manuel. 
\label{Case1}

\subsection{Casse et espaces}
\index[general]{Espaces!Casse et }
\index[general]{Casse et espaces }

La casse (majuscules/minuscules) et les espaces sont totalement ignor\'ees
dans les mots-clef des directives des ressources (la partie \`a gauche du
signe "=''). 

A l'int\'erieur des mots-clef (\`a gauche du signe "=''), les espaces ne sont
pas significatives. Ainsi, les mots-clef : {\bf name}, {\bf Name}, et {\bf N a
m e} sont tous identiques. 

Les espaces apr\`es le signe "='' et avant le premier caract\`ere de la
valeur son ignor\'ees. 

En g\'en\'eral, les espaces \`a l'int\'erieur d'une valeur sont significatives
(non ignor\'ees), et si la valeur est un nom, vous devez l'encadrer de doubles
quotes pour que l'espace soit accept\'ee. Les noms peuvent contenir jusqu'\`a
127 caract\`eres. Actuellement, un nom peut contenir n'importe quel
caract\`ere ASCII. A l'int\'erieur d'une cha{\^\i}ne quot\'ee, tout
caract\`ere pr\'ec\'ed\'e d'un backslash (\textbackslash{}) est pris tel quel
(utile pour ins\'erer des backslashes et doubles quotes (")). 

Veuillez cependant noter que les noms de ressource Bacula ainsi que certains
autres noms (par exemple les noms de volumes) ne doivent contenir que des 
lettres (y compris accentu\'ees ISO), nombres, et une poign\'ee de 
caract\`eres sp\'eciaux (espace, soulign\'e, ...). Tous les
autres carat\`eres et ponctuations sont prohib\'es. 
\label{Includes}

\subsection{Inclure d'autres fichiers de configuration}
\index[general]{Configuration!Inclure d'autres fichiers de }
\index[general]{Inclure d'autres fichiers de configuration }
\index[general]{Utiliser @ pour inclure d'autres fichiers de configuration}
\index[general]{@{\bf nom de fichier}}

Si vous souhaitez \'eclater votre fichier de configuration en fichiers plus
petits, l'inclusion est possible avec la syntaxe @{\bf NomDeFichier} o\`u {\bf
nom de fichier} est le chemin absolu vers un le fichier \`a inclure. Toute
donn\'ee primitive peut \^etre remplac\'ee par une sp\'ecification
@NomDeFichier. Par exemple 

Director \{ Name=@xxx est valide et substituera le fichier xxx \`a @xxx, mais
Director \{ Name@xxx = something n'est pas valide puisque @xxx appara{\^\i}t
au milieu d'un (???mot clef/directive/...???) 
\label{DataTypes}

\subsection*{Types de donn\'ees primitives reconnus}
\index[general]{Types de donn\'ees primitives reconnus }
\index[general]{Reconnus!Types de donn\'ees primitives }

Lorsqu'il parcourt les enregistrements de ressource, Bacula classe les
donn\'ees selon les types enum\'er\'es ci-dessous. En premi\`ere lecture,
cette liste peut vous para{\^\i}tre accablante, mais en r\'ealit\'e, tout y
est d'une logique \'el\'egante et directe. 

\begin{description}

\item [name]
   \index[console]{name }
   Un mot-clef ou un nom constitu\'e de caract\`eres alphanum\'eriques, incluant
le trait d'union, underscore et dollar. Le premier caract\`ere d'un {\bf name}
doit \^etre une lettre. La longueur d'un {\bf name} est actuellement limit\'ee
\`a 127 caract\`eres. Typiquement, les mots-clef appara{\^\i}ssent \`a gauche
d'un signe ''=". Les mots-clef ne peuvent \^etre quot\'es. 

\item [name-string]
   \index[console]{name-string }
   Une {\bf name-string} est similaire \`a un {\bf name} except\'e qu'elle peut
\^etre quot\'ee et ainsi contenir  des caract\`eres suppl\'ementaires. La
longueur des {\bf name-strings} est limit\'ee \`a 127 caract\`eres.
Typiquement, on les utilise \`a droite d'un signe ''=",  (i.e. ce sont les
valeurs \`a associer aux mots-clef). 

\item [string]
   \index[console]{string }
   Une cha{\^\i}ne quot\'ee contenant potentiellement n'importe quel caract\`ere,
y compris les espaces, ou une cha{\^\i}ne non quot\'ee. Une {\bf string} peut
avoir  une longueur quelconque. Typiquement, les {\bf strings} sont les
valeurs qui correspondent aux noms de fichiers, r\'epertoires, ou noms de
commandes syst\`eme. Un  {\it Backslash} (\textbackslash{}) change le prochain
caract\`ere en lui m\^eme, de sorte que pour inclure une double quote dans une
cha{\^\i}ne, vous devez la pr\'eceder d'un {\it Backslash}.  Il en va de
m\^eme pour inclure un {\it Backslash}. 

\item [directory]
   \index[dir]{directory }
   Un {\bf directory} (R\'epertoire) est une cha{\^\i}ne, quot\'ee ou non. Un
{\bf directory} est transmis \`a votre shell standard pour expansion lorsqu'il
est scann\'e. Ainsi, des constructions telles que {\bf \$HOME} sont
interpr\'et\'ees correctement. 

\item [password]
   \index[dir]{password }
   Il s'agit d'un mot de passe Bacula. Il est stock\'e en interne sous un format
brouill\'e par MD5. 

\item [integer]
   \index[dir]{integer }
   Une valeur enti\`ere relative (positive ou n\'egative) sur 32 bits. 

\item [positive integer]
   \index[dir]{positive integer }
   Une valeur enti\`ere positive sur 32 bits. 

\item [long integer]
   \index[dir]{long integer }
   Une valeur enti\`ere sur 64 bits. Typiquement, ce sont les valeurs telles que
le nombre de bytes, qui peuvent d\'epasser 4 milliards et ainsi  n\'ecessitent
une valeur sur 64 bits. 

\item [yes|no]
   \index[dir]{yes or no }
   Soit {\bf yes}, soit {\bf no}. 

\item [
   \label{Size1}
   size]
\index[dir]{a name }
Une taille specifi\'ee en bytes. Typiquement, il s'agit d'une entr\'ee au
format scientifique (avec virgule flottante) suivie  d'un modificateur
optionnel. L'entr\'ee est stock\'ee en tant qu'entier sur 64 bits. Si un
modificateur est sp\'ecifi\'e, il doit suivre imm\'ediatement la valeur, sans 
espace. Les modificateurs suivants sont reconnus:  

\begin{description}

\item [k]
   1 024 (kilobytes)  

\item [kb]
   1 000 (kilobytes)  

\item [m]
   1 048 576 (megabytes)  

\item [mb]
   1 000 000 (megabytes)  

\item [g]
   1 073 741 824 (gigabytes) 

\item [gb]
   1 000 000 000 (gigabytes) 
   \end{description}

\item {\bf 
   \label{Time}
   time}
\index[dir]{a name }
Une heure, ou une dur\'ee sp\'ecifi\'ee en secondes. Une valeur {\bf time} est
stock\'ee en interne en tant qu'entier sur 64 bits,  mais il est sp\'ecifi\'e
en deux parties: un nombre et un modificateur. Le nombre peut \^etre un entier
ou un nombre \`a virgule flottante. S'il est sp\'ecifi\'e en virgule 
flottante, il sera arrondi \`a l'entier le plus proche. Le modificateur est
obligatoire et suit le nombre avec ou sans espace intercal\'ee.  Les
modificateurs suivants sont reconnus:  

\begin{description}

\item [seconds]
   \index[dir]{seconds }
   secondes  

\item [minutes]
   \index[dir]{minutes }
   minutes (60 secondes)  

\item [hours]
   \index[dir]{hours }
   heures (3600 secondes)  

\item [days]
   \index[dir]{days }
   jours (3600*24 secondes)  

\item [weeks]
   \index[dir]{weeks }
   semaines (3600*24*7 secondes)  

\item [months]
   \index[dir]{months }
   mois (3600*24*30 secondes)  

\item [quarters]
   \index[dir]{quarters }
   trimestres (3600*24*91 secondes)  

\item [years]
   \index[dir]{years }
   ann\'ees (3600*24*365 secondes)  
\end{description}

Toute abbr\'eviation des ces modificateurs est aussi autoris\'ee (i.e. {\bf
seconds} peut \^etre sp\'ecifi\'e par {\bf sec} ou {\bf s}. Une
sp\'ecification {\bf m} sera  interpr\'et\'ee en tant que mois.  

La sp\'ecification d'une dur\'ee peut comporter autant de couples
nombre/modificateur que vous le souhaitez. Par exemple:  

\footnotesize
\begin{verbatim}
1 week 2 days 3 hours 10 mins
1 month 2 days 30 sec
   
\end{verbatim}
\normalsize

sont des sp\'ecifications valides (\`a partir de la version 1.35.1).  

Note! Dans les versions de Bacula ant\'erieures \`a 1.31, le modificateur
\'etait optionnel. Il est d\'esormais obligatoire.  
\end{description}

\label{ResTypes}

\section{Types de Ressources}
\index[general]{Types de Ressources }
\index[general]{Ressources!Types de }

La table suivante \'enum\`ere tous les types de ressource de la version
courante de Bacula. Elle montre quelle ressource doit \^etre d\'efinie pour
chaque service ({\it daemon}). Les fichiers de configuration par d\'efaut
contiennent au moins un exemple de chaque ressource permise, aussi ne soyez
pas angoiss\'e \`a l'id\'ee d'avoir \`a cr\'eer toutes ces directives {\it ex
nihilo}. 

\begin{longtable}{|l|l|l|l|l|}
 \hline 
\multicolumn{1}{|c| }{\bf Resource } & \multicolumn{1}{c| }{\bf Director } &
\multicolumn{1}{c| }{\bf Client } & \multicolumn{1}{c| }{\bf Storage } &
\multicolumn{1}{c| }{\bf Console  } \\
 \hline
 {Autochanger } & {No  } & {No } & {Yes } & {No  } \\
 \hline
 \hline 
{Catalog } & {Oui } & {Non  } & {Non } & {Non  } \\
 \hline 
{Client  } & {Oui } & {Oui } & {Non } & {Non  } \\
 \hline 
{Console } & {Oui } & {Non } & {Non } & {Oui  } \\
 \hline 
{Device  } & {Non  } & {Non } & {Oui } & {Non  } \\
 \hline 
{Director } & {Oui } & {Oui } & {Oui } & {Oui  } \\
 \hline 
{FileSet } & {Oui } & {Non } & {Non } & {Non  } \\
 \hline 
{Job  } & {Oui } & {Non } & {Non } & {Non  } \\
 \hline 
{JobDefs } & {Oui } & {Non } & {Non } & {Non  } \\
 \hline 
{Message } & {Oui } & {Oui } & {Oui } & {Non  } \\
 \hline 
{Pool  } & {Oui } & {Non } & {Non } & {Non  } \\
 \hline 
{Schedule } & {Oui } & {Non } & {Non } & {Non  } \\
 \hline 
{Storage } & {Oui } & {Non } & {Oui } & {Non }
\\ \hline 

\end{longtable}

\section{Noms, mots de passe et autorisations}
\label{Names}
\index[general]{Autorisations!Noms mots de passe et }
\index[general]{Noms, mots de passe et autorisations }
\index[general]{Mots de passe}

Pour qu'un {\it daemon} puisse en contacter un autre, il lui faut
s'authentifier avec un mot de passe. Dans la plupart des cas, le mot de passe
est associ\'e \`a un nom particulier, de sorte que nom et mot de passe doivent
correspondre. 

Les fichiers de configuration par d\'efaut sont automatiquement d\'efinis avec
des autorisations correctes et des mots de passe al\'eatoires. Si vous
modifiez ces fichiers, vous devrez \^etre attentif \`a leur coh\'erence. 

Voici un sch\'ema des correspondances que doivent respecter les couples
''nom/mot de passe" des diff\'erents fichiers de configurations. 

\includegraphics{./Conf-Diagram.eps} 

Dans la colonne de gauche, vous trouverez les ressources Director, Storage et
Client, avec leurs noms et mots de passe -- ils sont tous dans le fichier {\bf
bacula-dir.conf}. Dans la colonne de droite figurent les valeurs
correspondantes dans les fichiers de configuration de la Console, du Storage
Daemon (SD) et du File Daemon (FD). 

Veuillez noter que l'adresse {\bf fd-sd}, qui appara{\^\i}t dans la ressource
Storage du Director, pr\'ec\'ed\'ee d'une at\'erisque est transmise au File
Daemon sous forme symbolique. Le File Daemon la r\'esout alors en une adresse
IP. Pour cette raison, vous devez utiliser soit une adresse IP, soit une
adresse pleinement qualifi\'ee. Une adresse telle que {\bf localhost},
n'\'etant pas pleinement qualifi\'ee, sera r\'esolue par le File Daemon en
l'h\^ote local du File Daemon, ce qui n'est probablement pas le r\'esultat
d\'esir\'e. Le mot de passe utilis\'e par le File Daemon pour autoriser la
communication avec le Storage Daemon est temporaire et unique pour chaque {\it
job}. Il n'est sp\'ecifi\'e dans aucun fichier de configuration. 

\section{Informations d\'etaill\'ees sur chaque {\it daemon}}
\index[general]{Daemon!Informations d\'etaill\'ees sur chaque }
\index[general]{Informations d\'etaill\'ees sur chaque daemon }
daemon}

Les d\'etails de chaque ressource et des directives permises sont d\'ecrits
dans les chapitres suivants. 

Les fichiers de configuration suivants doivent \^etre d\'efinis: 

\begin{itemize}
\item 
   \ilink{Console}{ConsoleConfChapter} -- Pour d\'efinir les
   ressources pour le programme Console (interface utilisateur avec le Director).
Ce fichier d\'efinit quels sont les Directors disponibles avec lesquels vous
pouvez interagir.  
\item 
   \ilink{Director}{DirectorChapter} -- Pour d\'efinir les ressources
   n\'ecessaires au Director. Vous y d\'efinissez tous les Clients et Storage 
Daemons que vous utilisez.  
\item 
   \ilink{Client}{FiledConfChapter} -- Pour d\'efinir les ressources
   de chaque client \`a sauvegarder. Vous aurez un fichier de ressources  Client
pour chacune des machine qui ex\'ecute un File Daemon.  
\item 
   \ilink{Storage}{StoredConfChapter} -- Pour d\'efinir les ressources
   utilis\'ees par chaque Storage Daemon. En principe, vous aurez un  seul
Storage Daemon qui contr\^olera votre (vos) lecteur(s). Quoi qu'il en soit, si
vous avez des lecteurs sur plusieurs machines,  vous aurez au moins un Storage
Daemon par machine.  
\end{itemize}
