%%
%%

\section*{Configurer le Director}
\label{_ChapterStart40}
\index[general]{Director!Configurer le}
\index[general]{Configurer le Director}
\addcontentsline{toc}{section}{Configurer le Director}

Parmi tous les fichiers de configuration requis pour ex\'ecuter {\bf Bacula},
celui du Director est le plus compliqu\'e, et c'est celui que vous modifierez
le plus souvent, en ajoutant des clients ou en modifiant les FileSets. 

Pour une discussion g\'en\'erale concernant les fichiers et ressources ainsi
que les types de donn\'ees reconnus par {\bf Bacula}, veuillez consulter le
chapitre 
\ilink{Configuration}{_ChapterStart16} de ce manuel. 

\subsection*{Les types de ressources du Director}
\index[general]{Les types de ressources du Director}
\index[general]{Director!Les types de ressources du}
\addcontentsline{toc}{subsection}{Les types de ressources du Director}

Les types de ressources du Director sont : 

Job, JobDefs, Client, Storage, Catalog, Schedule, FileSet, Pool, Director, et
Messages. Nous les pr\'esentons ici dans l'ordre le plus logique (relativement
au fichier de configuration du Director) : 

\begin{itemize}
\item 
   \ilink{Director}{DirectorResource4} -- Pour d\'efinir le nom du
   Director et son  mot de passe pour l'authentification du programme Console. Il
   ne doit y avoir qu'une seule  d\'efinition de ressource Director dans le
   fichier de configuration.  Si vous avez soit {\bf /dev/random} soit {\bf bc}
   sur votre machine, Bacula g\'en\`erera  un mot de passe al\'eatoire lors du
   processus de configuration, sinon, il sera laiss\'e blanc. 
\item 
   \ilink{Job}{JobResource} -- Pour d\'efinir les Jobs de types
   sauvegarde et restauration,  et pour lier les ressources Client, FileSet et
Schedules \`a utiliser conjointement pour chaque Job. 
\item 
   \ilink{JobDefs}{JobDefsResource} -- Ressource optionnelle destin\'ee \`a
   fournir des valeurs par d\'efaut  pour les ressources Job. 
\item 
   \ilink{Schedule}{ScheduleResource} -- Pour d\'efinir le moment
   o\`u un Job doit \^etre lanc\'e  automatiquement par le {\it scheduler}
interne de Bacula. 
\item 
   \ilink{FileSet}{FileSetResource} -- Pour d\'efinir l'ensemble des
   fichiers \`a sauvegarder  pour chaque client. 
\item 
   \ilink{Client}{ClientResource2} -- Pour d\'efinir quel Client est
   \`a sauvegarder. 
\item 
   \ilink{Storage}{StorageResource2} -- Pour d\'efinir sur quel
   p\'eriph\'erique physique les  volumes seront mont\'es.  
\item 
   \ilink{Pool}{PoolResource} -- Pour d\'efinir quel le pool de volumes
   qui peut \^etre  utilis\'e pour un Job donn\'e 
\item 
   \ilink{Catalog}{CatalogResource} -- Pour d\'efinir la base de
   donn\'ees o\`u conserver les listes  des fichiers sauvegard\'es et des volumes
o\`u ils ont \'et\'e sauvegard\'es.  
\item 
   \ilink{Messages}{_ChapterStart15} -- Pour d\'efinir les
   destinataires (ou les fichiers de logs) des messages d'erreur et 
d'information.  
\end{itemize}
 
\subsection*{La ressource Director}
\label{DirectorResource4}
\index[general]{Director!La ressource}
\index[general]{La ressource Director}
\addcontentsline{toc}{subsection}{La ressource Director}

La ressource Director d\'efinit les attributs du Director ex\'ecut\'e sur le
r\'eseau. Dans l'impl\'ementation actuelle, il n'y a qu'une ressource
Director, mais la r\'ealisation finale contiendra plusieurs Directors pour
maintenir la redondance de la base des indexes et m\'edia. 

\begin{description}

\item [Director]
   \index[dir]{Director}
   D\'ebut de la ressource Director. Une ressource Director et une seule doit
\^etre d\'efinie. 
 
\item [Name = \lt{}nom\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
   Le nom du Director utilis\'e par l'administrateur syst\`eme. Cette directive
est requise  
  
\item [Description = \lt{ }texte\gt{}]
   \index[dir]{Description}
   \index[dir]{Directive!Description}
   Le champ texte contient une description du Director qui sera affich\'ee  dans
l'interface graphique. Cette directive est optionnelle.  
 
\item [Password = \lt{}UA-password\gt{}]
   \index[dir]{Password}
   \index[dir]{Directive!Password}
   Sp\'ecifie le mot de passe qui doit \^etre fourni par la Console Bacula par
d\'efaut  pour \^etre autoris\'ee. Le m\^eme mot de passe doit appara{\^\i}tre
dans la ressource {\bf Director} du fichier de  configuration de la console.
Pour plus de s\'ecurit\'e, le mot de passe ne transite jamais sur le r\'eseau,
l'authentification se fait via un \'echange de type {\it challenge-response}
d'un {\it hash code} cr\'e\'e avec le mot  de passe. Cette directive est
requise. Si vous disposez de {\bf /dev/random} ou {\bf bc} sur votre machine,
Bacula  g\'en\`erera un mot de passe al\'eatoire lors du processus
d'installation, sinon il sera laiss\'e blanc et vous devrez en d\'efinir  un
manuellement.  
 
\item [Messages = \lt{}Nom-de-ressource-Messages\gt{}]
   \index[dir]{Messages}
   \index[dir]{Directive!Messages}
   La ressource {\bf messages} sp\'ecifie o\`u doivent \^etre d\'elivr\'es les messages du Director 
 qui ne sont pas associ\'es \`a un job sp\'ecifique. La plupart des messages sont relatifs
 \`a un job et seront dirig\'es vers la ressource {\bf messages} sp\'ecifi\'ee par le job. 
 Cependant, quelques messages peuvent \^etre g\'en\'er\'es lorsque aucun job n'est actif. 
 Cette directive est requise.

\item [Working Directory = \lt{}R\'epertoire\gt{}]
   \index[dir]{Working Directory}
   \index[dir]{Directive!Working Directory}
   Cette directive sp\'ecifie un r\'epertoire o\`u le Director peut d\'eposer ses fichiers 
   d'\'etats. Ce r\'epertoire ne devrait \^etre utilis\'e que par Bacula, mais il peut \^etre 
   partag\'e par d'autres {\it daemons} Bacula. Notez cependant que si ce r\'epertoire est 
   partag\'e avec d'autres daemons Bacula, vous devez vous assurer que le nom {\bf Name} 
   donn\'e \`a chaque daemon est unique afin d'\'eviter des collisions entre les fichiers 
   temporaires utilis\'es. Par d\'efaut, le processus de configuration de Bacula cr\'e\'e des noms 
   de daemons uniques en les postfixant avec -dir, -fd et -sd.
   Les substitutions shell standard sont effectu\'ees \`a la lecture du fichier de 
   configuration, de sorte que des valeurs telles que {\bf \$HOME} seront correctement 
   substitu\'ees. Cette directive est requise.

   Si vous avez sp\'ecifi\'e un utilisateur et/ou un groupe pour le Director lors de la 
   configuration avec les options {\bf {-}{-}with-dir-user} et/ou {\bf {-}{-}with-dir-group} de 
   la commande ./configure, le r\'epertoire de travail Working Directory doit appartenir 
   doit appartenir \`a ce groupe et \`a cet utilisateur.

\item [Pid Directory = \lt{}R\'epertoire\gt{}]
   \index[dir]{Pid Directory}
   \index[dir]{Directive!Pid Directory}
    Cette directive sp\'ecifie un r\'epertoire o\`u le Director peut d\'eposer son fichier
d'Id de processus. Ce fichier est utilis\'e pour stopper Bacula et pr\'evenir l'ex\'ecution 
simultan\'ee de plusieurs copies de Bacula. Les substitutions shell standard sont
effectu\'ees \`a la lecture du fichier de configuration, de sorte que des valeurs
telles que {\bf \$HOME} seront correctement substitu\'ees.

Typiquement, sur les syst\`emes Linux, vous utiliserez ici {\bf /var/run}. Si vous 
n'installez pas Bacula dans les r\'epertoires syst\`eme, vous pouvez utiliser le 
r\'epertoire de travail {\bf Working Directory} d\'efini plus haut.
Cette directive est requise.

\item [Scripts Directory = \lt{}Directory\gt{}]
    \index[dir]{Scripts Directory}
    \index[dir]{Directive!Scripts Directory}
    Cette directive sp\'ecifie le r\'epertoire dans lequel le Director devra rechercher 
    le script Python de d\'emarrage {\bf DirStartup.py}. Ce r\'epertoire peut \^etre 
    partag\'e par d'autres daemons Bacula.Les substitutions shell standard sont effectu\'ees 
    \`a la lecture du fichier de configuration, de sorte que des valeurs telles que 
    {\bf \$HOME} seront correctement substitu\'ees. Cette directive est optionnelle.

\item [QueryFile = \lt{}Path\gt{}]
   \index[dir]{QueryFile}
   \index[dir]{Directive!QueryFile}
    Cette directive sp\'ecifie un r\'epertoire et un fichier dans lequel le 
Director peut trouver les requ\^etes SQL pr\'e\'etablies pour la commande 
{\bf Query} de la Console. Les substitutions shell standard sont
effectu\'ees \`a la lecture du fichier de configuration, de sorte que des valeurs
telles que {\bf \$HOME} seront correctement substitu\'ees. 
Cette directive est requise.

\label{DirMaxConJobs}

\item [Maximum Concurrent Jobs = \lt{}nombre\gt{}]
   \index[dir]{Maximum Concurrent Jobs}
   \index[dir]{Directive!Maximum Concurrent Jobs}
   \index[general]{Jobs Simultan\'es}
   \index[general]{Jobs Concurrents}
   
   O\`u \lt{}nombre\gt{} est le nombre maximal de jobs qui peuvent \^etre ex\'ecut\'es 
simultan\'ement par le Director. La valeur par d\'efaut est 1, mais vous pouvez utiliser 
une valeur plus grande.
Notez que le format des volumes devient beaucoup plus compliqu\'e avec plusieurs jobs 
ex\'ecut\'es simultan\'ement. De ce fait, les restaurations peuvent prendre beaucoup plus 
de temps si Bacula doit faire le tri parmi les segments entrem\'el\'es de ces jobs. Ceci 
peut \^etre \'evit\'e en s'arrangeant pour que chacun des jobs ex\'ecut\'es simultan\'ement 
\'ecrive sur un volume distinct. Une autre possibilit\'e consiste \`a utiliser le 
{\it data spooling} : les donn\'ees seront d'abord "spool\'ees" sur disque 
simultan\'ement, ensuite les fichiers "spool" seront \'ecrits s\'equentiellement 
sur le volume.   

Dans certains cas, des directives telles que {\bf Maximum Volume Jobs} ne sont pas 
correctement synchronis\'ees avec le nombre de jobs simultan\'es, et des probl\`emes 
de synchronisation subtils peuvent survenir, aussi des tests minutieux sont recommand\'es.

Actuellement, il n'y a aucun param\`etre de configuration pour r\'egler ou limiter 
le nombre de connections par console. Un maximum de cinq connection simultan\'ees 
est autoris\'e.

Pour plus de d\'etails concernant l'ex\'ecution simultan\'ee de plusieurs jobs, consultez la 
partie \ilink{Ex\'ecution simultan\'ee de plusieurs jobs}{ConcurrentJobs} du chapitre Astuces de ce manuel.


\item [FD Connect Timeout = \lt{}dur\'ee\gt{}]
   \index[dir]{FD Connect Timeout}
   \index[dir]{Directive!FD Connect Timeout}
   O\`u {\bf dur\'ee} est le d\'elai durant lequel le Director tente de contacter 
   le File Daemon pour d\'emarrer un job. Une fois ce d\'elai \'ecoul\'e, le Director supprimera le job.
   La valeur par d\'efaut est 30 minutes.
   
\item [SD Connect Timeout = \lt{}dur\'ee\gt{}]
   \index[dir]{SD Connect Timeout}
   \index[dir]{Directive!SD Connect Timeout}
   O\`u {\bf dur\'ee} est le d\'elai durant lequel le Director tente de contacter 
   le Storage Daemon pour d\'emarrer un job. Une fois ce d\'elai \'ecoul\'e, le Director supprimera le job.
   La valeur par d\'efaut est 30 minutes.

\item [DirAddresses = \lt{}Sp\'ecification-adresses-IP\gt{}]
   \index[dir]{DirAddresses}
   \index[dir]{Adresse}
   \index[general]{Adresse}
   \index[dir]{Directive!DirAddresses}
   Sp\'ecifie les ports et adresses sur lesquels le Director se met en attente de 
   connections de Consoles Bacula. La meilleure explication est sans doute un exemple :

\footnotesize
\begin{verbatim}
 DirAddresses  = { 
    ip = { addr = 1.2.3.4; port = 1205;}
    ipv4 = {
        addr = 1.2.3.4; port = http;}
    ipv6 = {
        addr = 1.2.3.4;
        port = 1205;
    }
    ip = {
        addr = 1.2.3.4
        port = 1205
    }
    ip = { addr = 1.2.3.4 }
    ip = { addr = 201:220:222::2 }
    ip = {
        addr = bluedot.thun.net
    }
 }
\end{verbatim}
\normalsize

o\`u "ip", "ip4", "ip6", "addr", et "port sont les mots clef. Notez que 
les adresses peuvent \^etre sp\'ecifi\'ees sous forme de quadruplets point\'es, ou 
suivant la notation \`a doubles points IPv6, ou encore sous forme de nom symbolique 
(seulement pour la sp\'ecification ip). D'autre part, le port peut \^etre sp\'ecifi\'e 
par un nombre, ou par une valeur mn\'emonique du fichier /etc/services. Si un port 
n'est pas pr\'ecis\'e, celui par d\'efaut sera utilis\'e. Si une section ip est sp\'ecifi\'ee, 
la r\'esolution peut \^etre faite soit par IPv4, soit par IPv6. Si ip4 est sp\'ecifi\'e, 
seules les r\'esolutions IPv4 seront permises. Il en va de m\^eme avec ip6.

Notez que si vous utilisez la directive DirAddresses, vous ne devez utiliser ni la directive 
DirPort, ni la directive DirAddress dans la m\^eme ressource.

\item [DIRport = \lt{}num\'ero-de-port\gt{}]
   \index[dir]{DIRport}
   \index[dir]{Directive!DIRport}
   Sp\'ecifie le port (un entier positif) sur lequel le Director est \`a l'\'ecoute 
de connections de Consoles Bacula. Ce m\^eme num\'ero de port doit \^etre sp\'ecifi\'e 
dans la ressource Director du fichier de configuration de la console. La 
valeur par d\'efaut est 9101, aussi, il n'est en principe pas n\'ecessaire 
de renseigner cette directive. Elle n'est pas requise si vous sp\'ecifiez des 
DirAdresses.

\item [DirAddress = \lt{}Adresse-IP\gt{}]
   \index[dir]{DirAddress}
   \index[dir]{Directive!DirAddress}
   Cette directive est optionnelle. Lorsqu'elle est sp\'ecifi\'ee, le Director n'accepte 
de connections Console que de l'adresse sp\'ecifi\'ee {\bf Adresse-IP}, qui peut \^etre 
soit un nom de domaine, soit une adresse IP au format quadruplet point\'e ou cha\^ine quot\'ee.  
Si cette directive n'est pas sp\'ecifi\'ee, le Director acceptera des connections de Console 
de toute adresse valide. Notez que contrairement \`a la sp\'ecification DirAdresses d\'ecrite 
plus haut, cette directive ne permet de sp\'ecifier qu'une seule adresse. Cette directive 
n'est pas requise si vous utilisez la directive DirAdresses.

\end{description}

Voici un exemple d'une ressource Director valide :

\footnotesize
\begin{verbatim}
Director {
  Name = HeadMan
  WorkingDirectory = "$HOME/bacula/bin/working"
  Password = UA_password
  PidDirectory = "$HOME/bacula/bin/working"
  QueryFile = "$HOME/bacula/bin/query.sql"
  Messages = Standard
}
\end{verbatim}
\normalsize

\subsection*{La ressource Job}
\label{JobResource}
\index[general]{Resource!Job }
\index[general]{Job Resource }
\addcontentsline{toc}{subsection}{Job Resource}

La ressource Job d\'efinit un Job (sauvegarde, restauration,...) que Bacula doit 
ex\'ecuter. Chaque d\'efinition de ressource Job contient le nom d'un client, la 
liste des \'el\'ements \`a sauvegarder (FileSet), la planification (Schedule) pour 
ce Job, le lieu o\`u sauvegarder ces donn\'ees (Storage Device) et quel groupe de 
media utiliser (Pool). En effet, chaque ressource Job doit r\'epondre aux questions : 
"Quoi ?", "O\`u ?", "Quand ?" et "Comment ?" soit, respectivement Fileset, Storage, 
Schedule, Type et Niveau (Sauvegarde/Restauration - Full/Differentielle/Incr\'ementale).
Notez que le FileSet doit \^etre sp\'ecifi\'e lors des restaurations pour des raisons 
historiques, mais il n'est plus utilis\'e.

Un seul type ({\bf Backup}, {\bf Restore}, ...) peut \^etre sp\'ecifi\'e pour un Job donn\'e. 
Si vous voulez sauvegarder plusieurs FileSets sur le m\^eme client, vous devez d\'efinir un 
Job pour chacun d'entre eux.

\begin{description}

\item [Job]
   \index[dir]{Job}
   \index[dir]{Directive!Job}
   D\'ebut de la ressource Job. Il faut d\'efinir au moins une ressource Job.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
    \index[dir]{Directive!Name}
   Le nom du Job. Ce nom peut \^etre utilis\'e avec la commande {\bf Run} du 
   programme Console pour lancer un Job. Si le nom contient des espaces, 
   il doit \^etre plac\'e entre quotes. C'est g\'en\'eralement une bonne id\'ee de 
   nommer vos Jobs du nom du Client qu'ils sauvegardent, afin de les 
   identifier ais\'ement.

   Lors de l'ex\'ecution d'un Job, son nom unique est compos\'e du nom que vous avez 
   sp\'ecifi\'e ici suffix\'e avec la date et l'heure de sa planification.
   Cette directive est requise.

\item [Enabled =  \lt{}yes|no\gt{}]
   \index[dir]{Enable}
   \index[dir]{Directive!Enable}
   Cette directive permet d'activer ou d\'esactiver l'ex\'ecution automatique d'un job 
   par le planificateur.

\item [Type = \lt{}job-type\gt{}]
   \index[dir]{Type}
   \index[dir]{Directive!Type}
   La directive {\bf Type} sp\'ecifie le type de Job, qui peut \^etre l'un des 
   suivants : {\bf Backup},  {\bf Restore}, {\bf Verify}, ou {\bf Admin}. 
   Cette directive est requise. Pour chaque type de Job, il existe diff\'erents 
   niveaux, qui seront d\'ecrits dans les prochains paragraphes.

\begin{description}

\item [Backup]
   \index[dir]{Backup}
   D\'efinit une sauvegarde. En principe, vous aurez au moins un job de type Backup 
   par client sauvegard\'e. A moins que vous ne d\'esactiviez le catalogue, la 
   plupart des donn\'ees et statistiques concernant les fichiers sauvegard\'ees 
   seront \'ecrites dans le catalogue.

\item [Restore]
   \index[dir]{Restore}
   D\'efinit une restauration. En principe, vous ne cr\'eerez qu'un seul job de ce 
   type, que vous utiliserez comme un prototype  que vous modifierez \`a l'aide 
   de la console lorsque vous devrez restaurer. Bien que certaines informations 
   basiques soient conserv\'ees dans le catalogue lors de restaurations, leur 
   quantit\'e est infime en regard des informations stock\'ees pour une sauvegarde -- 
   par exemple, aucune entr\'ee de nom de fichier n'est g\'en\'er\'ee, puisqu'aucun fichier 
   n'est sauvegard\'e.

\item [Verify]
   \index[dir]{Verify}
   D\'efinit un Job de type Verify. Le Jobs de type {\bf verify}  permettent de 
   comparer le catalogue au syst\`eme de fichiers ou \`a ce qui a \'et\'e sauvegard\'e. 
   Vous pouvez l'utiliser pour vous assurer qu'une cartouche de donn\'ees est 
   lisible, mais aussi comme un syst\`eme de d\'etection d'intrusion \`a la fa\c {c}on de 
   Tripwire.

\item [Admin]
   \index[dir]{Admin}
   D\'efinit un Job de type Admin. Un  {\bf Admin} peut s'utiliser pour "\'elaguer" 
   p\'eriodiquement le catalogue, si vous ne souhaitez pas que ceci soit fait \`a la fin 
   de chaque sauvegarde. Bien que les Jobs de type admin soient enregistr\'es dans le 
   catalogue, la quantit\'e de donn\'ees g\'en\'er\'ee est infime.
   
\end{description}

\label{Level}

\item [Level = \lt{}job-level\gt{}]
   \index[dir]{Directive!Level}
   \index[dir]{Level}
   La directive Level sp\'ecifie le niveau d'ex\'ecutiondu job  par d\'efaut. 
   Chaque type de job a son propre jeu de niveaux qui peuvent \^etre sp\'ecifi\'es. 
   Le niveau d'ex\'ecution est en g\'en\'eral surcharg\'e par une valeur diff\'erente 
   sp\'ecifi\'ee dans la ressource {\bf Schedule}. Cette directive n'est pas 
   requise mais doit \^etre sp\'ecifi\'ee soit ici, soit en tant que surcharge 
   dans la ressource {\bf Schedule}.
   
Pour un job de type {\bf Backup} le niveau doit \^etre l'un des suivants : 

\begin{description}

\item [Full]
   \index[dir]{Full}
   Tous les fichiers du FileSet, qu'ils aient \'et\'e modifi\'es ou non.

\item [Incremental]
   \index[dir]{Incremental}
   Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde valide du FileSet 
   sp\'ecifi\'e pour le m\^eme job. Si le Director ne peut trouver une sauvegarde Full ant\'erieure, 
   le niveau du job sera \'elev\'e en une sauvegarde Full. Lorsque le Director 
   recherche une Full valide dans le catalogue, il recherche un job avec 
   les caract\'eristiques suivantes :

\begin{itemize}
\item le m\^eme nom de job ; 
\item le m\^eme nom de client ;  
\item le m\^eme FileSet (toute modification de la d\'efinition du FileSet telle 
      que l'ajout ou la suppression de fichiers dans les sections Include ou 
      Exclude constitue un changement de FileSet).
\item le niveau requis (Full, Differential ou Incremental)
\item le job s'est termin\'e normalement, c'est \`a dire un qu'il ne s'est pas termin\'e 
      en \'echec, et n'a pas \'et\'e effac\'e.
\end{itemize}

Si toutes les conditions ci-dessus ne sont pas r\'ealis\'ees, le Director 
augmentera la sauvegarde incr\'ementale en une sauvegarde Full. Dans le cas 
contraire, la sauvegarde incr\'ementale sera effectu\'ee normalement.

Le File Daemon (Client) d\'etermine les fichiers \`a sauvegarder pour une 
incr\'ementale par comparaison de l'heure de d\'emarrage du Job pr\'ec\'edent 
(Full, Diff\'erentiel ou Incr\'emental) avec les dates de derni\`ere modification 
de chaque fichier (st\_mtime) et de ses attributs (st\_ctime). Si le fichier 
ou ses attributs ont chang\'es depuis cette date de d\'emarrage, alors le fichier 
sera sauvegard\'e.

Veuillez noter que certains logiciels anti-virus peuvent modifier la date 
st\_time lors de leurs op\'erations de scan. Ainsi, si l'antivirus modifie 
la date d'acc\`es (st\_atime), qui n'est pas utilis\'ee par Bacula, il 
provoquera une modification du st\_ctime et conduira Bacula \`a sauvegarder 
les fichiers concern\'es lors des incr\'ementales et diff\'erentielles. Dans le 
cas de l'antivirus Sophos, vous pouvez \'eviter cet inconv\'enient en utilisant 
l'option {\bf \verb{--{no-reset-atime}. Pour les autres logiciels, voyez 
leurs manuels.

Lorsque Bacula effectue une sauvegarde incr\'ementale, tous les fichiers modifi\'es 
pr\'esents sur le syst\`eme sont sauvegard\'es. Cependant, tout fichier supprim\'e depuis 
la derni\`ere Full demeure dans le catalogue, ce qui signifie que si vous effectuez 
une restauration \`a partir de sauvegardes incr\'ementales (et de la Full associ\'ee), 
les fichiers supprim\'es depuis la derni\`ere Full seront aussi restaur\'es. Ces fichiers 
n'appara\^itront plus dans le catalogue apr\`es avoir fait une nouvelle sauvegarde 
Full. Le processus pour supprimer ces fichiers du catalogue lors d'une 
incr\'ementale ralentirait fortement les sauvegardes incr\'ementales. Il n'est 
actuellement pas impl\'ement\'e dans Bacula.

De plus, si vous d\'eplacez un r\'epertoire plut\^ot que de le copier, les fichiers qu'il 
contient voient leurs dates de derni\`ere modification (st\_mtime) et de dernier acc\`es 
(st\_ctime) inchang\'es. Par cons\'equent, ces fichiers ne seront probablement 
sauvegard\'es par aucune incr\'ementale ou diff\'erentielle, puisque ces derni\`eres 
ne se r\'ef\`erent qu'\`a ces indicateurs. Aussi, il est pr\'ef\'erable de copier un dossier 
avant de supprimer l'original plut\^ot que de le d\'eplacer, si vous voulez qu'il soit 
correctement sauvegard\'e.

\item [Differential]
   \index[dir]{Differential}
   Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde Full valide du FileSet
   sp\'ecifi\'e pour le m\^eme job. Si le Director ne peut trouver une sauvegarde Full 
   ant\'erieure, le niveau du job sera \'elev\'e en une sauvegarde Full. Lorsque le 
   Director recherche une Full valide dans le catalogue, il recherche un job avec 
   les caract\'eristiques suivantes :

\begin{itemize}
\item le m\^eme nom de job ;
\item le m\^eme nom de client ;
\item le m\^eme FileSet (toute modification de la d\'efinition du FileSet telle
      que l'ajout ou la suppression de fichiers dans les sections Include ou
      Exclude constitue un changement de FileSet).
\item le Job \'etait une sauvegarde FULL
\item le Job s'est termin\'e normalement, c'est \`a dire qu'il ne s'est pas termin\'e
      en \'echec, et n'a pas \'et\'e effac\'e.
\end{itemize}

Si toutes les conditions ci-dessus ne sont pas r\'ealis\'ees, le Director
augmentera la sauvegarde diff\'erentielle en une sauvegarde Full. Dans le cas
contraire, la sauvegarde diff\'erentielle sera effectu\'ee normalement.

Le File Daemon (Client) d\'etermine les fichiers \`a sauvegarder pour une
diff\'erentielle par comparaison de l'heure de d\'emarrage de la derni\`ere 
sauvegarde Full avec les dates de derni\`ere modification
de chaque fichier (st\_mtime) et de ses attributs (st\_ctime). Si le fichier
ou ses attributs ont chang\'es depuis cette date de d\'emarrage, alors le fichier
sera sauvegard\'e. La date de d\'emarrage utilis\'ee est affich\'e apr\`es le {\bf Since} 
du rapport de Job. Dans de rares cas, certains fichiers sont sauvegard\'es deux fois 
\`a cause de l'utilisation de la date de d\'emarrage de la sauvegarde pr\'ec\'edente, 
mais ceci assure qu'aucun changement n'est perdu. Comme pour les incr\'ementales, 
vous devriez vous assurer que les horloges de votre serveur Bacula et de vos clients 
sont synchronis\'ees, ou aussi proches que possible, pour \'eviter le risque d'omission 
d'un fichier. Notez qu'\`a partir de la version 1.33, Bacula effectue automatiquement 
ces ajustements de sorte que les horloges utilis\'ees par Bacula soient synchrones.

Veuillez noter que certains logiciels anti-virus peuvent modifier la date
st\_time lors de leurs op\'erations de scan. Ainsi, si l'antivirus modifie
la date d'acc\`es (st\_atime), qui n'est pas utilis\'ee par Bacula, il
provoquera une modification du st\_ctime et conduira Bacula \`a sauvegarder
les fichiers concern\'es lors des incr\'ementales et diff\'erentielles. Dans le
cas de l'antivirus Sophos, vous pouvez \'eviter cet inconv\'enient en utilisant
l'option {\bf \verb{--{no-reset-atime}. Pour les autres logiciels, voyez
leurs manuels.

Lorsque Bacula effectue une sauvegarde diff\'erentielle, tous les fichiers modifi\'es
pr\'esents sur le syst\`eme sont sauvegard\'es. Cependant, tout fichier supprim\'e depuis
la derni\`ere Full demeure dans le catalogue, ce qui signifie que si vous effectuez
une restauration \`a partir de sauvegardes diff\'erentielles (et de la Full associ\'ee),
les fichiers supprim\'es depuis la derni\`ere Full seront aussi restaur\'es. Ces fichiers
n'appara\^itront plus dans le catalogue apr\`es avoir fait une nouvelle sauvegarde
Full. Le processus pour supprimer ces fichiers du catalogue lors d'une
incr\'ementale ralentirait fortement les sauvegardes diff\'erentielles. Il n'est
actuellement pas impl\'ement\'e dans Bacula, mais plannifi\'e pour une future version 
de Bacula.

Comme not\'e ci-dessus, si vous d\'eplacez un r\'epertoire plut\^ot que de le copier, les fichiers 
qu'il contient voient leurs dates de derni\`ere modification (st\_mtime) et de dernier acc\`es
(st\_ctime) inchang\'es. Par cons\'equent, ces fichiers ne seront probablement
sauvegard\'es par aucune incr\'ementale ou diff\'erentielle, puisque ces derni\`eres
ne se r\'ef\`erent qu'\`a ces indicateurs. Aussi, il est pr\'ef\'erable de copier un dossier
avant de supprimer l'original plut\^ot que de le d\'eplacer, si vous voulez qu'il soit
correctement sauvegard\'e.

R\'eguli\`erement, quelqu'un demande \`a quoi servent les sauvegardes diff\'erentielles 
du moment que les incr\'ementales r\'ecup\`erent tous les fichiers modifi\'es. Il existe 
plusieurs r\'eponses \`a cette question, mais la plus importante \`a mes yeux est de 
combiner toutes les incr\'ementales et diff\'erentielles depuis la derni\`ere full en 
une seule diff\'erentielle. Ceci a deux effets : 1. La redondance. 2. Plus important, 
la r\'eduction du nombre de volumes requis pour faire une restauration en 
\'eliminant la n\'ecessit\'e de lire tous les volumes des pr\'ec\'edentes incr\'ementales 
depuis la derni\`ere full.

\end{description}

Pour un Job de type {\bf Restore}, aucun niveau ne doit \^etre sp\'ecifi\'e.  

Pour un Job de type {\bf Verify}, le niveau peut \^etre l'un des suivants :   

\begin{description}

\item [InitCatalog]
   \index[dir]{InitCatalog}
   Examine le {\bf FileSet} sp\'ecifi\'e et stocke les attributs de fichiers dans le 
   catalogue. Vous pouvez vous interroger sur l'int\'er\^et d'un Job qui ne 
   sauvegarde aucun fichier. La r\'eponse est de pouvoir utiliser Bacula comme 
   vous utiliseriez Tripwire, en d'autres termes, ce type de Jobs vous permet 
   de sauvegarder l'\'etat d'un ensemble de fichiers d\'efini par un {\bf FileSet} 
   afin de pouvoir ult\'erieurement contr\^oler si rien n'a \'et\'e modifi\'e, supprim\'e ou 
   ajout\'e. Ceci peut \^etre utilis\'e pour d\'etecter une intrusion. Typiquement, 
   vous sp\'ecifiez un {\bf FileSet} qui contient l'ensemble des fichiers qui ne 
   devraient pas changer (par exemple /sbin, /boot, /lib, /bin,  ...). Ensuite, 
   vous ex\'ecutez le Job verify de niveau {\bf InitCatalog} apr\`es l'installation 
   de votre syst\`eme, puis apr\`es chaque modification (mise \`a jour). Ensuite, 
   lorsque vous souhaitez contr\^oler l'\'etat de votre syst\`eme de fichiers, 
   vous utilisez un Job {\bf Verify}, {\bf level = Catalog} afin de comparer 
   le r\'esultat de votre {\bf InitCatalog} avec l'\'etat actuel de votre syst\`eme 
   de fichiers.

\item [Catalog]
   \index[dir]{Catalog}
   Compare l'\'etat actuel des fichiers et l'\'etat pr\'ec\'edemment sauvegard\'e 
   lors d'un {\bf InitCatalog}. Toutes les anomalies sont rapport\'ees. 
   Les objets du rapport sont d\'etermin\'es par les options {\bf verify} 
   sp\'ecifi\'ees dans la directive {\bf Include} du {\bf FileSet} sp\'ecifi\'e 
   (voyez la ressource {\bf FileSet} ci-dessous pour plus de d\'etails). 
   Typiquement, cette commande sera ex\'ecut\'ee quotidiennement pour 
   contr\^oler toute modification de votre syst\`eme de fichier.
   
Attention ! Si vous ex\'ecutez deux jobs Verify Catalog simultan\'ement sur le m\^eme client, 
les r\'esultats seront probablement erronn\'es. En effet, Verify Catalog modifie 
le catalogue lors de son ex\'ecution afin de d\'etecter les nouveaux fichiers.

\item [VolumeToCatalog]
   \index[dir]{VolumeToCatalog}
   Ce niveau permet de lire les attributs de fichiers \'ecrits sur le Volume 
   lors du dernier Job. Les attributs de fichiers sont compar\'es aux valeurs 
   sauvegard\'ees dans le catalogue et toute diff\'erence est rapport\'ee. Ceci 
   est similaire au niveau {\bf Catalog}, sauf que ce sont les 
   attributs des fichiers du volume plut\^ot que ceux des fichiers du disque 
   qui sont compar\'es aux attributs sauvegard\'es dans le catalogue. Bien que 
   les attributs et signatures (MD5 ou SHA1) soient compar\'es, les donn\'ees 
   r\'eelles ne le sont pas (elles ne figurent pas dans le catalogue).

Attention ! Si vous ex\'ecutez deux jobs Verify VolumeToCatalog simultan\'ement sur le m\^eme client,
les r\'esultats seront probablement erronn\'es. En effet, Verify VolumeToCatalog modifie
le catalogue lors de son ex\'ecution afin de d\'etecter les nouveaux fichiers.

\item [DiskToCatalog]
   \index[dir]{DiskToCatalog}
   Ce niveau permet de lire les fichiers tels qu'ils sont actuellement sur le 
   disque et de comparer leurs attributs actuels avec ceux stock\'es dans le 
   catalogue lors de la derni\`ere sauvegarde pour le Job sp\'ecifi\'e par la 
   directive {\bf VerifyJob}. Ce niveau diff\`ere du niveau {\bf Catalog} 
   d\'ecrit plus haut en ce qu'il ne se r\'ef\`ere pas \`a un Job Verify ant\'erieur, 
   mais \`a la derni\`ere sauvegarde. Lorsque vous utilisez ce niveau , vous devez 
   renseigner les option Verify de la section Include. Ces options d\'eterminent 
   quels attributs seront compar\'es.

Cette commande peut se r\'ev\'eler tr\`es utile si vous avez des probl\`emes de disque 
car elle comparera l'\'etat actuel de votre disque avec la derni\`ere sauvegarde 
valide, qui peut remonter \`a plusieurs jobs.

Notez que l'impl\'ementation actuelle (1.32c) n'identifie pas les fichiers qui 
ont \'et\'e supprim\'es.
\end{description}

\item [Verify Job = \lt{}Job-Resource-Name\gt{}]
   \index[dir]{Verify Job}
   \index[dir]{Directive!Verify Job}
   Si vous ex\'ecutez un job verify sans cette directive, le dernier job 
   ex\'ecut\'e sera compar\'e avec le catalogue, ce qui signifie que votre commande 
   verify doit succ\'eder imm\'ediatement \`a une sauvegarde. Si vous sp\'ecifiez 
   un {\bf Verify Job}, Bacula trouvera le dernier job ex\'ecut\'e avec ce nom. 
   Ceci vous permet d'ex\'ecuter toutes vos sauvegardes, puis d'ex\'ecuter les jobs 
   Verify sur les sauvegardes de votre choix (le plus souvent, un {\bf VolumeToCatalog} 
   de sorte que la cartouche qui vient juste d'\^etre \'ecrite est relue).
   
\item [JobDefs = \lt{}JobDefs-Resource-Name\gt{}]
   \index[dir]{JobDefs}
   \index[dir]{Directive!JobDefs}
   Si un nom de JobDef est sp\'ecifi\'e dans la d\'efinition d'un Job, toutes les valeurs 
   d\'efinies dans la ressource JobDef concern\'ee seront utilis\'ees en tant que valeurs 
   par d\'efaut pour le Job. Toute valeur explicitement sp\'ecifi\'ee dans la 
   d\'efinition du Job outrepasse la valeur par d\'efaut d\'efinie par le JobDef.
   L'utilisation de cette directive permet d'\'ecrire des ressources Job plus 
   compactes, o\`u la majeure partie des directives sont d\'efinies dans un ou 
   plusieurs JobDefs. C'est particuli\`erement pratique si vous avez de nombreux 
   Jobs similaires avec des variations mineures telles que diff\'erents clients.
   Un exemple basique de l'utilisation d'un Jobdef est fourni dans le fichier 
   bacula-dir.conf par d\'efaut.

\item [Bootstrap = \lt{}bootstrap-file\gt{}]
   \index[dir]{Bootstrap}
   \index[dir]{Directive!Bootstrap}
   La directive Bootstrap sp\'ecifie un fichier bootstrap qui, s'il est fourni, 
   sera utilis\'e lors des restaurations et ignor\'e par tout les autres Jobs. 
   Le fichier {\bf bootstrap} contient la liste des cartouches n\'ecessaires 
   pour la restauration ainsi que les index des fichiers \`a restaurer 
   (localisation sur la cartouche). Cette directive 
   est optionnelle, et n'est utilis\'ee que pour les restaurations. De plus, 
   elle peut \^etre modifi\'ee lorsqu'une restauration est lanc\'ee depuis la console.
   
Si vous utilisez la commande {\bf Restore} dans la console pour lancer une 
restauration, le fichier {\bf bootstrap} sera cr\'e\'e automatiquement \`a partir des 
fichiers que vous avez s\'electionn\'es pour la restauration.

Pour plus de d\'etails concernant les fichiers {\bf bootstrap}, veuillez 
consulter le chapitre \ilink{Restaurer des fichiers avec le fichier Bootstrap}{_ChapterStart43} 
de ce manuel.

\label{writebootstrap}
\item [Write Bootstrap =  \lt{}bootstrap-file-specification\gt{}]
   \index[dir]{Write Bootstrap}
   \index[dir]{Directive!Write Bootstrap}
   La directive {\bf writebootstrap} sp\'ecifie le de fichier Bootstrap o\`u Bacula 
   \'ecrira lors de chaque sauvegarde. Ainsi, cette directive s'applique 
   exclusivement aux jobs de type sauvegarde. Si la sauvegarde est une Full, 
   Bacula \'ecrase le contenu du fichier sp\'ecifi\'e. Sinon, Bacula ajoute les 
   nouveaux enregistrements Bootstrap \`a la fin du fichier.

En utilisant cette fonction, vous aurez constamment un fichier bootstrap 
capable de recouvrer l'\'etat le plus r\'ecent de votre syst\`eme. Le fichier 
bootstrap devrait \^etre \'ecrit sur un disque mont\'e sur une autre machine, de 
sorte que vous puissiez en disposer imm\'ediatement en cas de d\'efaillance 
de votre disque dur. Une alternative consiste \`a copier le fichier sur une autre 
machine apr\`es chaque mise \`a jour.

Si la {\bf sp\'ecification de fichier bootstrap} d\'ebute par une barre verticale (|), 
Bacula consid\`ere la sp\'ecification comme un nom de programme vers lequel les 
les enregistrement bootstrap seront redirig\'es. Ce peut \^etre, par exemple, un 
script qui vous envoie par e-mail les enregistrements bootstrap.

A partir de la version 1.40, Bacula effectue des 
\ilink{character substitution}{substitution de caracteres} comme dans une directive 
RunScript. Pour g\'erer automatiquement vos fichiers bootstrap, vous pouvez utiliser 
ceci dans vos {\bf JobDefs} : 

\begin{verbatim}
JobDefs {
   Write Bootstrap = "%c_%n.bsr"
   ...
}
\end{verbatim}

Pour plus de d\'etails sur l'utilisation de fichiers bootstrap, veuillez 
consulter le chapitre intitul\'e \ilink{Le Fichier Bootstrap}{_ChapterStart43} 
de ce manuel.


\item [ Client = \lt{}client-resource-name\gt{}]
   \index[dir]{Client}
   \index[dir]{Directive!Client}
   La directive Client sp\'ecifie le Client (File Daemon) \`a utiliser dans le Job.
   Le client est ex\'ecut\'e sur la machine \`a sauvegarder. Il exp\'edie les fichiers requis
   au Storage Daemon lors des sauvegardes, et re\c {c}oit les fichiers du Storage Daemon
   lors des restaurations. Pour plus de d\'etails, consultez la section
   \ilink{Ressource Client}{ClientResource2} de ce chapitre. Cette deirective est requise.


\item [ FileSet = \lt{}FileSet-resource-name\gt{}]
   \index[dir]{FileSet}
   \index[dir]{FileSet}
   La directive FileSet sp\'ecifie le FileSet \`a utiliser dans le Job concern\'e. Le
   FileSet d\'efinit les r\'epertoires et fichiers \`a sauvegarder, ainsi que les options
   \`a utiliser pour les sauvegarder (par exemple la compression,...). Un Job ne peut
   contenir qu'un seul FileSet. Pour plus de d\'etails, consultez la section
   \ilink{Ressource FileSet}{FileSetResource} de ce chapitre.
   Cette directive est requise.

\item [ Messages = \lt{}messages-resource-name\gt{}]
   \index[dir]{Messages}
   \index[dir]{Directive!Messages}
   La directive Messages d\'efinit la ressource Message qui doit \^etre utilis\'ee
   pour le job concern\'e. Ainsi, elle d\'etermine le comment et o\`u seront
   d\'elivr\'es les diff\'erents messages de Bacula. Par exemple, vous pouvez diriger
   certains messages vers un fichier de logs, tandis que d'autres seront
   envoy\'es par e-mail. Pour plus de d\'etails, consultez le chapitre
   \ilink{Ressource Messages}{_ChapterStart15} de ce manuel. Cette directive
   est requise.

\item [ Pool = \lt{}pool-resource-name\gt{}]
   \index[dir]{Pool}
   \index[dir]{Directive!Pool}
   La directive Pool sp\'ecifie le jeu de volumes qui doit \^etre utilis\'e pour
   sauvegarder vos donn\'ees. De nombreuses installations de Bacula
   n'utiliseront que le pool d\'efini par d\'efaut {\bf Default}. Toutefois,
   si vous voulez sp\'ecifier diff\'erents jeux de volumes pou diff\'erents clients
   ou diff\'erents jobs, vous voudrez probablement utiliser les Pools.
   Pour plus de d\'etails, consultez la section \ilink{Ressource Pool}{PoolResource}
   de ce chapitre. Cette directive est requise

\item [ Full Backup Pool = \lt{}pool-resource-name\gt{}]
   \index[dir]{Full Backup Pool}
   \index[dir]{Directive!Full Backup Pool}
   La directive {\it Full Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
   sauvegardes Full. Cette directive outrepasse toute autre sp\'ecification
   de Pool lors d'une sauvegarde Full. Cette directive est optionnelle.

\item [ Differential Backup Pool = \lt{}pool-resource-name\gt{}]
   \index[dir]{Differential Backup Pool}
   \index[dir]{Directive!Differential Backup Pool}
   La directive {\it Differential Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
   sauvegardes Diff\'erentielles. Cette directive outrepasse toute autre sp\'ecification
   de Pool lors d'une sauvegarde Diff\'erentielle. Cette directive est optionnelle.

\item [ Incremental Backup Pool = \lt{}pool-resource-name\gt{}]
   \index[dir]{Incremental Backup Pool}
   \index[dir]{Directive!Differential Backup Pool}
   La directive {\it Incremental Backup Pool} sp\'ecifie un Pool \`a utiliser pour les
   sauvegardes Incr\'ementales. Cette directive outrepasse toute autre sp\'ecification
   de Pool lors d'une sauvegarde Incr\'ementale. Cette directive est optionnelle.

\item [ Schedule = \lt{}schedule-name\gt{}]
   \index[dir]{Schedule}
   \index[dir]{Directive!Schedule}
   La directive Schedule d\'efinit la planification du job. Le {\it schedule} d\'etermine 
   la date et l'instant o\`u le job doit \^etre lanc\'e automatiquement, et le niveau 
   (Full, Diff\'erentiel, Incr\'emental...) du job en question. Cette directive est 
   optionnelle. Si elle est omise, le job ne pourra \^etre ex\'ecut\'e que manuellement via 
   la Console. Bien que vous puissiez vous contenter d'une ressource Schedule simple
   pour tout job, vous pouvez aussi d\'efinir des ressources Schedule avec plusieurs 
   directives {\bf Run}, afin de lancer le job \`a diff\'erentes heures. Chacune de ces 
   directives {\bf Run} permet d'outrepasser les valeurs par d\'efaut de Level, Pool, 
   Storage et Messages ressources. Ceci autorise une grande souplesse d'utilisation 
   d'un simple job.
   Pour plus de d\'etails, consultez le chapitre. 
   \ilink{Ressource Schedule}{ScheduleResource} de ce manuel. 

\item [ Storage = \lt{}storage-resource-name\gt{}]
   \index[dir]{Storage}
   \index[dir]{Directive!Storage}
   La directive Storage d\'efinit le nom du service storage que vous souhaitez 
   utiliser pour sauvegarder les donn\'ees du FileSet. Pour plus de d\'etails, consultez le 
   chapitre \ilink{Ressource Storage}{StorageResource2} de ce manuel.
   Cette directive est requise.
   
\item [ Max Start Delay = \lt{}time\gt{}]
   \index[sd]{Max Start Delay}
    \index[dir]{Directive!Max Start Delay}
   La directive Max Start Delay sp\'ecifie le d\'elai maximal entre l'horaire 
   planifi\'e (dans le schedule) et l'horaire effectif de d\'emarrage du job. 
   Par exemple, un job peut \^etre programm\'e pour d\'emarrer \`a 1h, mais \^etre 
   mis en attente \`a cause d'autres jobs en cours d'ex\'ecution. Si le 
   Max Start Delay a \'et\'e r\'egl\'e \`a 3600, le job sera supprimm\'e s'il n'a pas 
   d\'emarr\'e \`a 2h. Ceci peut se r\'ev\'eler utile pour, par exemple, \'eviter qu'un job 
   s'ex\'ecute duant les heures ouvrables. La valeur par d\'efaut est 0 (pas de limite).

\item [ Max Run Time = \lt{}time\gt{}]
   \index[sd]{Max Run Time}
   \index[dir]{Directive!Max Run Time}
   La directive Max Run Time sp\'ecifie le d\'elai allou\'e pour l'ex\'ecution 
   compl\`ete d'un job depuis son lancement (pas n\'ecessairement \`a l'heure 
   de sa programmation) jusqu'\`a sa fin. Cette directive est impl\'ement\'ee 
   depuis la version 1.33.

\item [ Max Wait Time = \lt{}time\gt{}]
   \index[sd]{Max Wait Time}
   \index[dir]{Directive!Max Wait Time}
   La directive Max Wait Time sp\'ecifie le d\'elai maximum durant lequel un 
   job peut rester bloqu\'e en attente d'une ressource (par exemple, en attente du 
   montage d'une cartouche ou encore en attente des Storage ou File Daemon occup\'es 
   \`a d'autres tāches) depuis son lancement (pas n\'ecessairement \`a l'heure
   de sa programmation) jusqu'\`a sa fin. Cette directive est impl\'ement\'ee
   depuis la version 1.33. 
   
\item [Incremental Max Wait Time = \lt{}time\gt{}]
   \index[dir]{Incremental Max Wait Time}
   \index[dir]{Directive!Incremental Max Wait Time}
   Cette directive sp\'ecifie le temps maximum durant lequel une sauvegarde 
   incr\'ementale peut rester bloqu\'ee en attente d'une ressource (par exemple, en 
   attente d'une cartouche ou des File ou Storage daemons), compt\'e \`a partir 
   du d\'emarrage du job, ({\bf pas n\'ecessairement} l'heure \`a laquelle le job 
   a \'et\'e programm\'e). Notez que si un {\bf Max Wait Time} a \'et\'e sp\'ecifi\'e, 
   il peut aussi s'appliquer au job.

\item [Differential Max Wait Time = \lt{}time\gt{}]
   \index[dir]{Differential Max Wait Time}
   \index[dir]{Directive!Differential Max Wait Time}
   Cette directive sp\'ecifie le temps maximum durant lequel une sauvegarde
   diff\'erentielle peut rester bloqu\'ee en attente d'une ressource (par exemple, en
   attente d'une cartouche ou des File ou Storage daemons), compt\'e \`a partir
   du d\'emarrage du job, ({\bf pas n\'ecessairement} l'heure \`a laquelle le job
   a \'et\'e programm\'e). Notez que si un {\bf Max Wait Time} a \'et\'e sp\'ecifi\'e,
   il peut aussi s'appliquer au job.

\item [Prefer Mounted Volumes = \lt{}yes|no\gt{}]
    \index[dir]{Prefer Mounted Volumes}
    \index[dir]{Directive!Differential Max Wait Time}
    Si cette directive est activ\'ee (c'est le cas par d\'efaut), le Director 
    ordonne au Storage daemon de s\'electionner de pr\'ef\'erence soit une 
    librairie, soit un lecteur avec un volume valide d\'ej\`a mont\'e, plut\^ot qu'un 
    lecteur pas pr\`et. Si aucun lecteur n'est pr\`et, c'est le premier lecteur 
    pr\`et qui sera s\'electionn\'e.

    Si cette directive est d\'esactiv\'ee, le Storage daemon privil\'egiera 
    les lecteurs inutilis\'es. Ce mode de fonctionnement peut \^etre tr\`es utile 
    pour ces sites avec de nombreux lecteurs qui o\`u il peut \^etre pr\'ef\'erable 
    de maximiser le flux des sauvegardes au prix d'une utilisation d'un plus 
    grand nombre de lecteurs et de cartouches. Afin d'optimiser l'utilisation 
    de plusieurs lecteurs, vous voudrez probablement lancer chacun de vos 
    jobs l'un apr\`es l'autre avec un intervalle de 5 secondes environ. Ceci 
    aidera \`a assurer que chaque nuit, le m\^eme lecteur (volume) est 
    s\'electionn\'e pour le m\^eme job. Autrement, lors d'une restauration, vous 
    pourriez trouver vos fichiers dispers\'es sur beaucoup plus de volumes que 
    n\'ecessaire.

\item [ Prune Jobs = \lt{}yes|no\gt{}]
   \index[dir]{Prune Jobs}
   \index[dir]{Directive!Prune Jobs}
   En principe, l'\'elagage des jobs du catalogue est sp\'ecifi\'e pour chaque client 
   dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette 
   directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes}, 
   elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur 
   par d\'efaut est {\bf no}.

\item [ Prune Files = \lt{}yes|no\gt{}]
   \index[dir]{Prune Files}
   \index[dir]{Directive!Prune Jobs}
   En principe, l'\'elagage des fichiers du catalogue est sp\'ecifi\'e pour chaque client
   dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette
   directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes},
   elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur
   par d\'efaut est {\bf no}.
 
\item [ Prune Volumes = \lt{}yes|no\gt{}]
   \index[dir]{Prune Volumes}
   \index[dir]{Directive!Prune Jobs}
   En principe, l'\'elagage des volumes du catalogue est sp\'ecifi\'e pour chaque client
   dans sa propre ressource Client par la directive {\bf AutoPrune}. Si cette
   directive est sp\'ecifi\'ee (normalement, non) et si la valeur est {\bf yes},
   elle outrepasse la valeur sp\'ecifi\'ee dans la ressource Client. La valeur
   par d\'efaut est {\bf no}.

\item [RunScript \{...\}]
   \index[dir]{RunScript}
   \index[dir]{Directive!Run Script}

   La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe avant le
   lancement du job. Cette directive est optionnelle.
   Vous disposez des options suivantes : \\

\begin{tabular}{|c|c|c|l}
Options         & Valeur  & Defaut & Informations  \\
\hline
\hline
Runs On Success & Yes/No & {\it Yes} & La commande est ex\'ecut\'ee si le job s'est termin\'e avec succ\`es\\
\hline
Runs On Failure & Yes/No & {\it No} & La commande est ex\'ecut\'ee si le job a \'echou\'e\\
\hline
Runs On Client  & Yes/No & {\it Yes} & La commande est ex\'ecut\'ee sur le client\\
\hline
Runs When       & Before|After|Always & {\it Never} & Le moment o\`u la commande doit \^etre ex\'ecut\'ee\\
\hline
Abort Job On Error & Yes/No & {\it Yes} & Abandonne le job si le script retourne 
                                        un r\'esultat non nul\\
\hline
Command          &       &          & Le chemin vers votre script\\
\hline
\end{tabular}
   Tout retour de la commande sur la sortie standard est
   incluse dans le rapport de job de Bacula. La cha\^ine {bf command} doit \^etre
   un nom de programme valide ou un script shell

   D'autre part,
   la cha\^ine {bf command} est parcourue puis envoy\'ee vers la fonction execvp(), ce qui
   signifie que le chemin de la commande est recherch\'e pour son ex\'ecution, mais
   qu'il n'y a aucune interpr\'etation shell. Par cons\'equent, si vous voulez utiliser
   des commandes complexes ou toute fonctionnalit\'e du shell telle que la
   redirection, vous devez appeler un script shell o\`u vous mettrez vos commandes.
  
   Avant de soumettre la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula
   effectue les substitutions suivantes :

\label{character substitution}

\footnotesize
\begin{verbatim}
    %% = %
    %c = Nom du client
    %d = Nom du Director
    %e = Statut de sortie du job
    %i = JobId
    %j = Nom unique du job
    %l = Niveau du job
    %n = Nom du job
    %s = Temps Depuis (NDT : Since Time)
    %t = Type de job (Backup,...)
    %v = Nom de volume
\end{verbatim}
\normalsize

Le code de statut de fin de job peut prendre les valeurs suivantes :

\index[dir]{Exit Status}
\begin{itemize}
\item OK
\item Error
\item Fatal Error
\item Canceled
\item Differences
\item Unknown term code
\end{itemize}

   Aussi, si vous l'utilisez dans une ligne de commande, il vous faudra l'encadrer
   de quotes.

Vous disposez des raccourcis suivants :\\
\begin{tabular}{|c|c|c|c|c|c}
Mot clef & RunsOnSuccess & RunsOnFailure  & AbortJobOnError & Runs On Client & RunsWhen  \\
\hline
Run Before Job         &        &       & Yes     & No     & Before \\
\hline
Run After Job          &  Yes   &   No  &         & No     & After  \\
\hline
Run After Failed Job   &  No    &  Yes  &         & No     & After  \\
\hline
Client Run Before Job  &        &       & Yes     & Yes    & Before \\
\hline
Client Run After Job   &  Yes   &   No  &         & Yes    & After  \\
\hline
Client Run After Failed Job   &  No    &  Yes  &         & Yes     & After  \\
\end{tabular}

Exemple :
\begin{verbatim}
RunScript {
    RunsWhen = Before
    AbortJobOnError = No
    Command = "/etc/init.d/apache stop"
}

RunScript {
    RunsWhen = After
    RunsOnFailure = yes
    Command = "/etc/init.d/apache start"
}
\end{verbatim}

{\bf Consid\'erations particuli\`eres \`a Windows}
   D'autre part, pour les clients Windows \`a partir de la version 1.33, notez bien 
   que vous devez fournir un chemin correct pour votre script, et que le script 
   peut avoir l'extension .com, .exe, ou .bat. Si vous sp\'ecifiez un chemin, 
   vous devez aussi sp\'ecifier l'extension compl\`ete. Les commandes \`a la fa\c{c}on 
   d'Unix ne fonctionneront pas, \`a moins que vous n'ayez install\'e et 
   correctement configur\'e Cygwin en plus (et s\'epar\'ement) de Bacula.

La commande peut \^etre n'importe quel programme reconnu par cmd.exe ou command.com 
comme un fichier ex\'ecutable. Sp\'ecifier une extension de fichier ex\'ecutable 
est optionnel, \`a moins qu'il y ait une ambigu\"it\'e (par exemple ls.bat, ls.exe).

Bacula cherche la commande dans le r\'epertoire "System \%Path\%" (Dans la
bo\^ite de dialogue des variables d'environnement vous avez les variables
"syst\`eme" et "utilisateurs". Si bacula-fd fonctionne en tant que
service, seules les variables d'environnement syst\`emes sont accessibles.)

Les variables d'environnement syst\`eme peuvent \^etre invoqu\'ees avec la
syntaxe \%var\% et utilis\'ees comme portion du nom de la commande ou des
arguments.

Lorsque la sp\'ecification du chemin absolu d'un ex\'ecutable ou le nom de 
l'ex\'ecutable contient des espaces ou des caract\`eres sp\'eciaux, ils doivent 
\^etre quot\'es. Il en va de m\^eme pour les arguments.

\footnotesize
\begin{verbatim}
ClientRunBeforeJob = "\"C:/Program Files/Software
     Vendor/Executable\" /arg1 /arg2 \"foo bar\""
\end{verbatim}
\normalsize

Les caract\`eres sp\'eciaux \&()[]\{\}\^{}=;!'+,`\^u devront \^etre quot\'es s'ils font 
partie d'un nom de fichier ou d'un argument.


If someone is logged in a blank ``command'' window running the  commands will
be present during the execution of the command.  

Quelques suggestions de Phil Stracchino pour l'ex\'ecution sur les machines 
Win32 avec le File Daemon Win32 natif :

\begin{enumerate}
\item Vous pourriez utiliser la directive ClientRunBeforeJob pour sp\'ecifier 
      un fichier .bat qui ex\'ecute les commandes cot\'e client plut\^ot que 
      d'essayer d'ex\'ecuter (par exemple) regedit /e directement.
\item Le fichier batch devrait retourner explicitement 0 lors des ex\'ecutions correctes.
\item Le chemin vers le fichier batch devrait \^etre sp\'ecifi\'e au format Unix :

   ClientRunBeforeJob = ``c:/bacula/bin/systemstate.bat''  

plut\^ot qu'au format DOS/Windows :  

ClientRunBeforeJob =
``c:\textbackslash{}bacula\textbackslash{}bin\textbackslash{}systemstate.bat''
INCORRECT 
\end{enumerate}

L'exemple suivant d'utilisation de la directive Client Run Before Job a \'et\'e soumis 
par un utilisateur :\\
Vous pourriez \'ecrire un script shell pour sauvegarder une base DB2 dans un FIFO. Voici 
le script en question :

\footnotesize
\begin{verbatim}
 #!/bin/sh
 # ===== backupdb.sh
 DIR=/u01/mercuryd

 mkfifo $DIR/dbpipe
 db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING &
 sleep 1
\end{verbatim}
\normalsize

La ligne suivante dans la ressource Job du fichier bacula-dir.conf :
\footnotesize
\begin{verbatim}
 Client Run Before Job = "su - mercuryd -c \"/u01/mercuryd/backupdb.sh '%t'
'%l'\""
\end{verbatim}
\normalsize

Lorsque le job est ex\'ecut\'e, vous obtiendrez un message de sortie du script 
annon\c{c}ant que la sauvegarde a d\'emarr\'e. M\^eme si la commande est ex\'ecut\'ee en 
arri\`ere plan avec \&, le job bloquera jusqu'\`a la commande "db2 BACKUP DATABASE", et 
la sauvegarde se fige. 

Pour rem\'edier \`a cette situation, la ligne "db2 BACKUP DATABASE" 
devrait \^etre modifi\'ee en :

\footnotesize
\begin{verbatim}
 db2 BACKUP DATABASE mercuryd TO $DIR/dbpipe WITHOUT PROMPTING > $DIR/backup.log
2>&1 < /dev/null &
\end{verbatim}
\normalsize

Il est important de rediriger l'entr\'ee et la sortie d'une commande en arri\`ere plan 
vers /dev/null pour \'eviter le bloquage du script.

\item [ Run Before Job = \lt{}command\gt{}]
   \index[dir]{Run Before Job}
   \index[dir]{Directive!Run Before Job}
   La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe avant le
   lancement du job. Cette directive n'est pas requise,mais si elle est d\'efinie, 
   et si le code retour d'ex\'ecution du programme est diff\'erent de z\'ero, le job qui 
   a lanc\'e le programme est effac\'e. 

\begin{verbatim}
Run Before Job = "echo test"
\end{verbatim}
   est \'equivalent \'a :
\begin{verbatim}
RunScript {
 Command = "echo test"
 RunsOnClient = No
 RunsWhen = Before
}
\end{verbatim}

Lutz Kittler a fait remarquer que ceci peut \^etre un moyen ais\'e pour modifier
vos schedules pour les vacances. Par exemple, supposons que vous fassiez
habituellement des sauvegardes Full le vendredi, mais que jeudi et vendredi
soient f\'eri\'es. Pour \'eviter d'avoir \`a changer les cartouches entre jeudi et vendredi
alors que personne n'est au bureau, vous pouvez cr\'eer un RunBeforeJob qui retourne
un statut non nul jeudi et z\'ero les autres jours. Ainsi, le job de jeudi ne sera pas
ex\'ecut\'e, et la cartouche que vous avez ins\'er\'e mercredi sera disponible pour la Full
de vendredi.

\item [ Run After Job = \lt{}command\gt{}]
   \index[dir]{Run After Job}
   \index[dir]{Directive!Run After Job}
   La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe apr\`es la fin
   du job. La cha\^ine {bf command} doit \^etre un nom de programme valide ou un
   script shell. Cette directive n'est pas requise. Si le code de sortie du
   programme est non nul, Bacula affiche un message d'avertissement (warning).
   Avant de soumettre
   la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula effectue les
   substitutions de caract\`eres d\'ecrites au paragraphe {\bf RunScript}

Un exemple d'utilisation de cette directive est donn\'e au chapitre
\ilink{Astuces}{JobNotification} de ce manuel.
Lisez le paragraphe {\bf Run After Failed Job} si vous voulez ex\'ecuter
une commande lorqu'un job se termine avec un statut anormal.

\item [Run After Failed Job = \lt{}command\gt{}]
   \index[dir]{Run After Job}
   \index[dir]{Directive!Run After Job}
   La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe apr\`es la fin
   du job lorqu'il se termine avec un statut d'erreur. Cette directive est optionnelle.
   La cha\^ine {\bf command} doit \^etre le nom d'un programme ou d'un script shell.
   Si le code de sortie du programme est non nul, Bacula affiche un mesage d'avertissement
   (warning). Avant de soumettre
   la commande sp\'ecifi\'ee au syst\`eme d'exploitation, Bacula effectue les
   substitutions de caract\`eres d\'ecrites au paragraphe {\bf RunScript}. Notez que
   vous pouvez, si vous souhaitez que 
   votre programme soit ex\'ecut\'e quel que soit l'issue du job, utiliser une d\'efinition 
   telle que :

RunScript {
   Command = "echo test"
   RunsWhen = After
   RunsOnFailure = yes
   RunsOnClient  = no
   RunsOnSuccess = yes    \# default, you can drop this line
}

   Le chapitre \ilink{Trucs et astuces}{JobNotification} de ce manuel propose un
   exemple d'utilisation de cette directive.

\item [ Client Run Before Job = \lt{}command\gt{}]
   \index[dir]{Client Run Before Job}
    \index[dir]{Directive!Client Run Before Job}
   Cette directive est similaire \`a {\bf Run Before Job} except\'e que la
   commande est ex\'ecut\'ee sur la machine cliente. Les m\^emes restrictions
   s'appliquent aux syt\`emes Unix que celles signal\'ees pour {\bf Run Before Job}.

\item [ Client Run After Job = \lt{}command\gt{}]
   \index[dir]{Client Run After Job}
   \index[dir]{Directive!Client Run After Job}
   Cette directive est similaire \`a {\bf Run After Job} sauf qu'elle est ex\'ecut\'ee 
   sur la machine cliente. Veuillez consulter les notes concernant les clients 
   Windows dans le paragraphe {\bf RunScript} ci-dessus.

\item [ Rerun Failed Levels = \lt{}yes|no\gt{}]
   \index[dir]{Rerun Failed Levels}
   \index[dir]{Directive!Rerun Failed Levels}
   Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), et si 
   Bacula d\'etecte qu'un job ant\'erieur d'un niveau plus \'elev\'e (Full ou 
   diff\'erentiel), alors le job est \'elev\'e au niveau le plus haut. Ceci est 
   particuli\`erement utile pour sauvegarder les pc portables qui peuvent 
   \^etre fr\'equemment inaccessibles. En effet, apr\`es l'\'echec d'une Full, vous 
   souhaiterez probablement que la prochaine sauvegarde soit de niveau  Full 
   plut\^ot qu'Incremental ou Diff\'erentiel.

\item [ Spool Data = \lt{}yes|no\gt{}]
   \index[dir]{Spool Data}
   \index[dir]{Directive!Spool Data}
   Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), le 
   Storage Daemon aura pour consigne de stocker les donn\'ees dans un  
   fichier spoule sur disque plut\^ot que de les \'ecrire directement sur bande.
   Lorsque toutes les donn\'ees sont dans le spoule ou lorsque la taille 
   maximale fix\'ee pour le fichier spoule est atteinte, les donn\'ees sont 
   d\'echarg\'ees du spoule vers les bandes. Lorsque la valeur de cette directive 
   est {\bf yes}, la directive Spool Attributes est aussi automatiquement 
   mise \`a la valeur {\bf yes}. L'utilisation de cette fonctionnalit\'e 
   pr\'evient les arr\^ets et red\'emarrage incessants lors des incr\'ementales.
   Elle ne doit pas \^etre utilis\'ee si vous sauvegardez sur disque.


\item [ Spool Attributes = \lt{}yes|no\gt{}]
   \index[dir]{Spool Attributes}
    \index[dir]{Directive!Spool Attributes}
   \index[dir]{lenteur}
   \index[general]{lent}
   \index[dir]{Sauvegardes!lent}
   \index[general]{Sauvegardes!lent}
   La valeur par d\'efaut est {\bf no}, ce qui signifie que le Storage Daemon 
   envoie les attributs de fichiers au Director au moment o\`u ils (les fichiers) 
   sont ecrits sur la bande. Cependant, si vous souhaitez \'eviter le risque 
   de ralentissement d\^u aux mises \`a jour du catalogue, vous pouvez r\'egler  
   cette directive \`a {\bf yes}, dans ce cas, le Storage Daemon stockera les 
   attributs de fichiers dans un fichier tampon du Working Directory pour ne les 
   transmettre au Director qu'\`a la fin de l'\'ecriture sur bande des donn\'ees du job.

\item [ Where = \lt{}directory\gt{}]
   \index[dir]{Where}
   \index[dir]{Directive!Where}
   Cette directive ne concerne que les jobs de type Restauration. Elle permet 
   de sp\'ecifier un pr\'efixe au nom du r\'epertoire o\`u tous les fichiers sont 
   restaur\'es. Ceci permet de restaurer les fichiers en un emplacement 
   diff\'erent de celui o\`u ils ont \'et\'e sauvegard\'es. Si {\bf Where} n'est pas 
   renseign\'e, ou si sa valeur est backslash ({\bf /}), les fichiers sont 
   restaur\'es \`a leur emplacement d'origine. Par d\'efaut, nous avons donn\'e \`a 
   {\bf Where} la valeur {\bf /tmp/bacula-restores} dans les fichiers de 
   configuration fournis en exemple, ceci afin d'\'eviter l'\'ecrasement 
   accidentel de vos fichiers.

\item [ Replace = \lt{}replace-option\gt{}]
   \index[dir]{Replace}
   \index[dir]{Directive!Replace}
   Cette directive ne concerne que les jobs de type Restauration. Elle pr\'ecise 
   la conduite \`a adopter dans l'\'eventualit\'e o\`u Bacula serait conduit \`a restaurer 
   un fichier ou un r\'epertoire qui existe d\'ej\`a. Les options suivantes sont 
   disponibles :

\begin{description}

\item [always]
   \index[dir]{always }
   Lorsque le fichier \`a restaurer existe d\'ej\`a, il est supprim\'e et remplac\'e par la 
   copie sauvegard\'ee.

\item [ifnewer]
   \index[dir]{ifnewer }
   Si le fichier sauvegard\'e (sur bande) est plus r\'ecent que le fichier existant, 
   le fichier existant est supprim\'e et remplac\'e par la copie sauvegard\'ee.

\item [ifolder]
   \index[dir]{ifolder }
   Si le fichier sauvegard\'e (sur bande) est plus ancien que le fichier existant,
      le fichier existant est supprim\'e et remplac\'e par la copie sauvegard\'ee.

\item [never]
   \index[dir]{never }
   Si le fichier sauvegard\'e existe d\'ej\`a, Bacula renonce \`a restaurer ce fichier.
\end{description}

\item [ Prefix Links=\lt{}yes|no\gt{}]
   \index[dir]{Prefix Links}
   \index[dir]{Directive!Prefix Links}
   Si la valeur de cette directive est {\bf Yes} et si un pr\'efixe de chemin 
   {\bf Where} est sp\'ecifi\'e, alors ce dernier s'applique aussi aux liens 
   absolus. La valeur par d\'efaut est {\bf No}. Lorsque cette directive est \`a 
   {\bf Yes}, tous les liens absolus seront aussi modifi\'es pour 
   pointer vers le nouveau r\'epertoire. En principe, c'est ce qui est souhait\'e : 
   l'ensemble du r\'epertoire restaur\'e conserve sa coh\'erence interne. Cependant, 
   si vous voulez replacer les fichiers ult\'erieurement \`a leurs emplacements 
   d'origine, tous les liens absolus seront bris\'es.

\item [ Maximum Concurrent Jobs = \lt{}number\gt{}]
   \index[dir]{Maximum Concurrent Jobs}
   \index[dir]{Directive!Maximum Concurrent Jobs}
   O\`u \lt{}number\gt{} est le nombre maximum de jobs de la ressource Job courrante 
   qui peuvent \^etre ex\'ecut\'es simultan\'ement. Notez que cette directive ne limite 
   que les jobs avec le m\^eme nom que la ressource dans laquelle elle 
   figure. Toute autre restriction du nombre maximum de jobs simultan\'es, que ce soit au 
   niveau du Director, du Client ou de la ressource Storage, s'applique en plus de 
   de la limite stipul\'ee ici. La valeur par d\'efaut est 1, mais vous pouvez utiliser 
   une valeur plus grande. Nous vous recommandons fortement de lire 
   attentivement le paragraphe WARNING sous \ilink{ Maximum Concurrent Jobs}{DirMaxConJobs} 
   dans la section concernant la ressource Director.

\item [ Reschedule On Error = \lt{}yes|no\gt{}]
   \index[dir]{Reschedule On Error}
   \index[dir]{Directive!Reschedule On Error}
   Si cette directive est activ\'ee, alors si le job se termine en erreur, il sera 
   reprogramm\'e en accord avec les directives {\bf Reschedule Interval} et 
   {\bf Reschedule Times}. Si vous supprimez le job, il ne sera pas reprogramm\'e.
   La valeur par d\'efaut est {\bf no}.

Cette sp\'ecification peut se r\'ev\'eler utile pour les pc portables ainsi que pour toutes 
les machines qui ne sont pas connect\'ees au r\'eseau en permanence.

\item [ Reschedule Interval = \lt{}time-specification\gt{}]
   \index[dir]{Reschedule Interval}
    \index[dir]{Directive!Reschedule Interval}
   Si cette directive est activ\'ee, alors si le job se termine en erreur, il sera
   reprogramm\'e apr\`es l'intervalle de temps stipul\'e par {\bf time-specification}. 
   Consultez la section \ilink{ the time specification formats}{Time} du chapitre 
   Configurer Bacula pour plus de d\'etails sur les sp\'ecifications de temps. Si 
   aucun intervalle n'est sp\'ecifi\'e, le job ne sera pas reprogramm\'e en cas d'erreur.

\item [ Reschedule Times = \lt{}count\gt{}]
   \index[dir]{Reschedule Times}
   \index[dir]{Directive!Reschedule Times}
   Cette directive pr\'ecise le nombre maximal de tentatives d'ex\'ecution du job.
   S'il est fix\'e \`a z\'ero (valeur par d\'efaut), le job sera reprogramm\'e 
   ind\'efiniment.

\item [Run = \lt{}job-name\gt{}]
   \index[dir]{Run}
   \index[dir]{Directive!Run}
   \index[dir]{Cloner un Job}
    La directive Run (\`a ne pas confondre avec l'option Run dans un 
    Schedule) vous permet de d\'emarrer ou de cloner des jobs. En utilisant les 
    mots-clef de clonage (voir ci dessous), vous pouvez sauvegarder les m\^emes 
    donn\'ees (ou presque les m\^emes) vers deux (ou plus) lecteurs en m\^eme temps. 
    Le nom de job {\bf job-name} est en principe le m\^eme que celui de la 
    ressource job courante (cr\'eant ainsi un clone). Cependant, ce peut \^etre 
    n'importe quel nom de job, de sorte qu'un job peut d\'emarrer d'autre jobs li\'es. 
    La partie apr\`es le signe \'egale doit \^etre encadr\'ee de double quotes, et peut 
    contenir toute cha\^ine ou jeu d'options (surcharges) qui pourraient \^etre 
    sp\'ecifi\'ees \`a l'utilisation de la commande Run dans la Console. Par exemple, 
    {\bf storage=DDS-4 ...}. De plus, deux mots-clef sp\'eciaux vous permettent de 
    cloner le job courant : {\bf level=\%l} et {\bf since=\%s}. le \%l du mot clef 
    level permet d'entrer le niveau r\'eel du job courant et le \%s du mot clef since 
    permet d'imposer la m\^eme date pour la comparaison que celle utilis\'ee par le job courant.a
    Notez que dans le cas du mot-clef since, le \%s doit \^etre encadr\'e de double quotes, 
    qui doivent \^etre elles m\^emes pr\'ec\'ed\'ees de barres obliques arri\`eres puisque elles sont 
    d\'ej\`a entre double quotes. Par exemple :

    \begin{verbatim}
       run = "Nightly-backup level=%s since=\"%s\" storage=DDS-4"
    \end{verbatim}
    Un job clon\'e ne d\'emarrera pas de nouveaux clones, aussi il n'est pas possible de les cascader.
    
\label{Priority}
\item [ Priority = \lt{}number\gt{}]
   \index[dir]{Priority}
   \index[dir]{Directive!Priority}
   Cette directive vous permet de contr\^oler l'ordre d'ex\'ecution des jobs en 
   sp\'ecifiant un entier positif non nul. Plus grand est ce nombre, plus basse 
   est la priorit\'e du job. En supposant que vous n'ex\'ecutiez pas de jobs 
   simultan\'es, tous les jobs en file d'attente avec la priorit\'e 1 seront 
   ex\'ecut\'es avant ceux avec la priorit\'e 2, et ainsi de suite, sans prise en 
   compte de l'ordre original de planification.
   
   La priorit\'e affecte seulement les jobs en file d'attente, et non les jobs d\'eja 
   en cours d'ex\'ecution. Si un ou plusieurs jobs de priorit\'e 2 sont d\'ej\`a en cours 
   d'ex\'ecution, et si un nouveau job est programm\'e avec la priorit\'e 1, les jobs 
   en cours d'ex\'ecution doivent se terminer pour que le job de priorit\'e 1 puisse 
   d\'emarrer.

   La priorit\'e par d\'efaut est 10.

Si vous voulez ex\'ecutez plusieurs jobs simultan\'es,  
vous devriez garder les points suivants \`a l'esprit :

\begin{itemize}
\item Pour ex\'ecuter plusieurs jobs simultan\'es, vous devez ajuster la directive 
      {\bf Maximum Concurrent Jobs} (utiliser une valeur sup\'erieure \'a 1) 
      en cinq ou six endroits diff\'erents : dans le 
      fichier bacula-dir.conf, les ressources {\bf Job}, {\bf Client}, {\bf Storage};
      dans le fichier bacula-fd, la ressource {\bf FileDaemon}; et dans le fichier 
      bacula-sd.conf, la ressource {\bf Storage}. Si vous omettez l'un d'entre eux, 
      les jobs seront ex\'ecut\'es un par un.
\item Bacula n'ex\'ecute pas simultan\'ement les jobs de priorit\'es distinctes. 
\item Si Bacula ex\'ecute un job de priorit\'e 2 et si un nouveau job de priorit\'e 
      1 est programm\'e, il attendra la fin du job de priorit\'e 1, m\^eme si les 
      param\`etres {\bf Maximum Concurrent Jobs} pourraient permettre l'ex\'ecution 
      simultan\'ee de deux jobs.
\item Supposons que Bacula soit en train d'ex\'ecuter un job de priorit\'e 2 et qu'un 
      job de priorit\'e 1 soit programm\'e et mis en queue en attente de la fin du 
      job de priorit\'e 2. Si vous d\'emarrez alors un second job de priorit\'e 2, le job 
      en attente de priorit\'e 1 emp\`echera le nouveau job de priorit\'e 2 de s'ex\'ecuter 
      en parall\`ele au premier. Ainsi : tant qu'il reste un job de priorit\'e sup\'erieure 
      \`a ex\'ecuter, aucun nouveau job de priorit\'e inf\'erieure ne pourra d\'emarrer, m\^eme si 
      les param\`etres {\bf Maximum Concurrent Jobs} devraient le permettre. Ceci permet 
      d'assurer que les jobs de priorit\'e sup\'erieure seront ex\'ecut\'es d\`es que possible.
\end{itemize}

Si vous avez plusieurs jobs de priorit\'es diff\'erentes, il est pr\'ef\'erable de ne pas les 
d\'emarrer exactement \`a la m\^eme heure, car Bacula doit les examiner un \`a la fois. Si, 
par hazard, Bacula commence par traiter un job de priorit\'e inf\'erieure, il sera 
ex\'ecut\'e avant votre job de priorit\'e \'elev\'e. Pour \'eviter cette situation, 
d\'emarrez l'un quelconque des jobs de priorit\'e \'elev\'ee quelques secondes avant 
ceux de basse priorit\'e. Ainsi, vous serez assur\'e que Bacula examine les jobs 
dans l'ordre voulu et que votre sch\'ema de priorit\'es sera respect\'e.

\label{WritePartAfterJob}

\item [ Write Part After Job = \lt{}yes|no\gt{}]
   \index[sd]{Write Part After Job}
   \index[dir]{Directive!Write Part After Job}
Cette directive est impl\'ement\'ee depuis la version 1.37.
Si la valeur de cette directive est {\bf yes} ({\bf no} par d\'efaut), un nouveau 
"fichier partition" (ndt : part file) sera cr\'e\'e apr\`es la fin du job. 

Cette directive devrait \^etre activ\'ee lors de l'\'ecriture sur des p\'eriph\'erique 
qui requi\`erent un montage (par exemple, les DVDs), afin de vous assurer que 
le fichier partition courant, celui qui contient les donn\'ees de ce job, est 
envoy\'e vers le p\'eriph\'erique, et qu'aucune donn\'ee n'est laiss\'ee dans le fichier 
temporaire sur le disque dur. Quoi qu'il en soit, avec certains supports tels 
que les DVD+R et DVD-R, beaucoup d'espace (environ 10 Mb) est perdu \`a chaque fois 
qu'un fichier partition est \'ecrit. Aussi, si vous ex\'ecutez plusieurs jobs \`a la 
suite, vous devriez r\'egler cette directive \`a {\bf no} pour tous ces jobs sauf 
le dernier, pour \'eviter un gaspillage important d'espace, tout en ayant la certitude 
que les donn\'ees sont bien \'ecrites sur le m\'edium lorsque tous les jobs sont 
achev\'es.

Cette directive est ignor\'ee avec les bandes et les p\'eriph\'eriques FIFO.
\end{description}

Voici un exemple de d\'efinition de ressource Job valide.

\footnotesize
\begin{verbatim}
Job {
  Name = "Minou"
  Type = Backup
  Level = Incremental                 # default
  Client = Minou
  FileSet="Minou Full Set"
  Storage = DLTDrive
  Pool = Default
  Schedule = "MinouWeeklyCycle"
  Messages = Standard
}
\end{verbatim}
\normalsize

\subsection*{La ressource JobDefs}
\label{JobDefsResource}
\index[general]{JobDefs Resource }
\index[general]{Resource!JobDefs }
\addcontentsline{toc}{subsection}{JobDefs Resource}

La ressource Jobdefs admet toutes les directives qui peuvent appara\^itre dans 
une ressource Job. Une ressource Jobdefs ne cr\'e\'e en aucun cas un Job, son r\^ole 
est de pouvoir \^etre d\'esign\'ee dans une ressource Job comme un ensemble de 
param\`etres par d\'efaut. Ceci permet de d\'efinir plusieurs jobs similaires avec 
concision, en ne mentionnant, pour chaque job, que les diff\'erences avec les 
valeurs par d\'efaut sp\'ecifi\'ees dans la ressource Jobdefs.

\subsection*{La ressource Schedule}
\label{ScheduleResource}
\index[general]{Resource!Schedule }
\index[general]{Schedule Resource }
\addcontentsline{toc}{subsection}{Schedule Resource}

La ressource Schedule offre un moyen pour planifier automatiquement un Job, 
mais aussi la possibilit\'e de surcharger les param\`etres par d\'efaut de Level, 
Pool, Storage, et Messages ressources. Si une ressource Schedule n'est pas 
sp\'ecifi\'ee dans un job, ce job ne peut \^etre ex\'ecut\'e que manuellement. 
En g\'en\'eral, vous sp\'ecifierez une action et le moment de son lancement.

\begin{description}

\item [Schedule]
   \index[dir]{Schedule}
   \index[dir]{Directive!Schedule}
   D\'ebut des directives Schedule. La ressource {\bf Schedule} n'est pas requise, 
   mais il vous en faudra au moins une si vous souhaitez que vos jobs soient 
   ex\'ecut\'es automatiquement.
   
\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
   Le nom du Schedule d\'efini. Cette directive est requise.

\item [Run = \lt{}Job-overrides\gt{} \lt{}Date-time-specification\gt{}  ]
   \index[dir]{Run}
   \index[dir]{Directive!Run}
   La directive Run d\'efinit quand un job doit \^etre ex\'ecut\'e, et les \'eventuelles 
   surcharges \`a appliquer. Il est possible de sp\'ecifier plusieurs directives 
   {\bf run} au sein d'une ressource {\bf Schedule}, elles seront toutes 
   appliqu\'ees. Si vous avez deux directives {\bf Run} qui d\'emarrent au m\^eme 
   moment, deux jobs seront lanc\'es simultan\'ement (en fait, avec une seconde d'\'ecart).
   

La directive {\bf Job-overrides} permet d'outrepasser les sp\'ecifications de 
Level, Storage, Messages et Pool \'ecrites dans la ressource Job. De plus, 
les sp\'ecifications FullPool, DifferentialPool et IncrementalPool permettent 
de passer outre les sp\'ecification de Pool, en accord avec le niveau (level) 
effectif d'ex\'ecution du job.

L'utilisation de surcharges permet de peaufiner le param\'etrage d'un job 
particulier. Par exemple, vous pourriez surcharger une sp\'ecification 
Messages qui enverrait vos logs de backups vers un fichier, de fa\c {c}on \`a ce qu'ils 
vous soient envoy\'es par mails pour les Fulls hebdomadaires ou mensuelles.

Les directives {\bf Job-overrides} sont sp\'ecifi\'ees en tant que {\bf mot-clef=valeur} 
o\`u le mot-clef est l'un des suivants : Level, Storage,  Messages, Pool, FullPool, 
DifferentialPool ou IncrementalPool, et la {\bf valeur} est d\'efinie selon le format 
adapt\'e \`a la directive. Vous pouvez sp\'ecifier plusieurs surcharges {\bf Job-overrides} 
en une seule directive {\bf Run} en les s\'eparant par des espaces ou des 
trailing comas (traduction ?). Par exemple :

\begin{description}

\item [Level=Full]
   \index[dir]{Level}
   \index[dir]{Directive!Level}
   Tous les fichiers du FileSet qu'ils aient ou non chang\'e.

\item [Level=Incremental]
   \index[dir]{Level}
   \index[dir]{Directive!Level}
   Tous les fichiers qui ont chang\'e depuis la derni\`ere sauvegarde.

\item [Pool=Weekly]
   \index[dir]{Pool}
   \index[dir]{Directive!Pool}
   Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Weekly}.

\item [Storage=DLT\_Drive]
   \index[dir]{Storage }
   \index[dir]{Directive!Storage}
   Sp\'ecifie l'utilisation du lecteur {\bf DLT\_Drive} pour p\'eriph\'erique de stockage.

\item [Messages=Verbose]
   \index[dir]{Messages }
   \index[dir]{Directive!Messages}
   Sp\'ecifie l'utilisation de la ressource messages {\bf Verbose} pour le job.

\item [FullPool=Full]
   \index[dir]{FullPool}
   \index[dir]{Directive!FullPool}

   Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Full} si le job est une sauvegarde Full, 
   ou s'il a \'et\'e \'elev\'e en Full bien qu'ayant \'et\'e lanc\'e en tant que diff\'erentiel ou 
   incr\'emental.

\item [DifferentialPool=Differential]
   \index[dir]{DifferentialPool }
    \index[dir]{Directive!DifferentialPool}
    Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Differential} si le job est une 
    sauvegarde diff\'erentielle.

\item [IncrementalPool=Incremental]
   \index[dir]{IncrementalPool}
   \index[dir]{Directive!IncrementalPool}
   Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Incremental} si le job est une 
   sauvegarde incr\'ementale.

\item [SpoolData=yes|no]
   \index[dir]{SpoolData}
   \index[dir]{Directive!SpoolData}
   Indique \`a Bacula d'ordonner au Storage Daemon de placer les donn\'ees sur un 
   spool disque avant de les envoyer vers les cartouches.

\item [WritePartAfterJob=yes|no]
   \index[dir]{WritePartAfterJob}
   \index[dir]{Directive!WritePartAfterJob}
   Indique \`a Bacula d'ordonner au Storage Daemon d'\'ecrire le fichier partition 
   courant vers le p\'eriph\'erique lorsque le job s'ach\`eve (voir 
\ilink{la directive Write Part After Job dans la ressource Job}{WritePartAfterJob}).  
\end{description}

{\bf Date-time-specification} D\'etermine la planification d'ex\'ecution du job.
La sp\'ecification est une r\'ep\'etition, et, par d\'efaut, Bacula est param\'etr\'e 
pour ex\'ecuter un job au d\'ebut de chaque heure de chaque jour de chaque semaine 
de chaque mois de chaque ann\'ee. Ce n'est probablement pas ce que vous souhaitez, 
aussi vous devez pr\'eciser ou limiter les moments o\`u vous souhaitez voir vos jobs 
ex\'ecut\'es. Toute sp\'ecification est suppos\'ee cyclique et servira \`a limiter le 
cycle par d\'efaut. Ceci se fait en sp\'ecifiant des masques ou des horaires,  
jours de la semaine, jours du mois, semaines du mois, semaines de l'ann\'ee et 
mois de l'ann\'ee o\`u vous voulez ex\'ecuter le job. En combinant ces possibilit\'es, 
vous pouvez d\'efinir une planification qui se r\'ep\`ete \`a presque n'importe quelle 
fr\'equence.

Concr\`etement, vous devez d\'efinir les {\bf mois}, {\bf jour}, {\bf heure} et 
{\bf minute} o\`u le job est \`a ex\'ecuter. Parmis ces quatre objets, le {\bf jour} 
est particulier en ce qu'il peut sp\'ecifier un jour du mois (1,2,...31) ou de la 
semaine (Monday, Tuesday,...Sunday). Enfin, vous pouvez aussi sp\'ecifier un 
jour de la semaine pour restreindre la planification \`a la premi\`ere, deuxi\`eme, 
troisi\`eme, quatri\`eme ou cinqui\`eme semaine du mois.

Par exemple, si vous sp\'ecifiez seulement un jour de la semaine, disons {\bf Mardi}, 
le job sera ex\'ecut\'e toutes les heures de chaque mardi de chaque mois. La raison 
en est que les param\`etres {\bf Mois} et {\bf Heure} sont rest\'es \`a leurs valeurs 
par d\'efaut : chaque mois et chaque heure.

Notez que, par d\'efaut, sans autre sp\'ecification, votre job s'ex\'ecutera au 
d\'ebut de chaque heure. Si vous souhaitez que votre job s'ex\'ecute plus souvent 
qu'une fois par heure, il vous faudra d\'efinir plusieurs sp\'ecifications {\bf run} 
avec pour chacune une minut diff\'erente.

Les dates et horaires d'ex\'ecutions des jobs peuvent \^etre sp\'ecifi\'es comme suit, 
en pseudo-BNF :

\footnotesize
\begin{verbatim}
<void-keyword>    = on
<at-keyword>      = at
<week-keyword>    = 1st | 2nd | 3rd | 4th | 5th | first |
                    second | third | forth | fifth
<wday-keyword>    = sun | mon | tue | wed | thu | fri | sat |
                    sunday | monday | tuesday | wednesday |
                    thursday | friday | saturday
<week-of-year-keyword> = w00 | w01 | ... w52 | w53
<month-keyword>   = jan | feb | mar | apr | may | jun | jul |
                    aug | sep | oct | nov | dec | january |
                    february | ... | december
<daily-keyword>   = daily
<weekly-keyword>  = weekly
<monthly-keyword> = monthly
<hourly-keyword>  = hourly
<digit>           = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
<number>          = <digit> | <digit><number>
<12hour>          = 0 | 1 | 2 | ... 12
<hour>            = 0 | 1 | 2 | ... 23
<minute>          = 0 | 1 | 2 | ... 59
<day>             = 1 | 2 | ... 31
<time>            = <hour>:<minute> |
                    <12hour>:<minute>am |
                    <12hour>:<minute>pm
<time-spec>       = <at-keyword> <time> |
                    <hourly-keyword>
<date-keyword>    = <void-keyword>  <weekly-keyword>
<day-range>       = <day>-<day>
<month-range>     = <month-keyword>-<month-keyword>
<wday-range>      = <wday-keyword>-<wday-keyword>
<range>           = <day-range> | <month-range> |
                          <wday-range>
<date>            = <date-keyword> | <day> | <range>
<date-spec>       = <date> | <date-spec>
<day-spec>        = <day> | <wday-keyword> |
                    <day-range> | <wday-range> |
                    <week-keyword> <wday-keyword>
                    <day-range> | <wday-range> |
                    <daily-keyword>
<month-spec>      = <month-keyword> | <month-range> |
                    <monthly-keyword>
<date-time-spec>  = <month-spec> <day-spec> <time-spec>
\end{verbatim}
\normalsize

\end{description}

Notez que les sp\'ecifications de semaine et d'ann\'ee suivent les d\'efinitions ISO 
standard de semaine et ann\'ee, o\`u la semaine 1 est la semaine qui contient le 
premier jeudi de l'ann\'ee, ou alternativement, la semaine qui contient le 
quatri\`eme jour de janvier. Les semaines sont num\'erot\'ees w01 \`a w53. w00 est 
pour Bacula la semaine qui pr\'ec\`ede la premi\`ere semaine ISO (c'est \`a dire celle 
qui contient les quelques premiers jours de l'ann\'ee si aucun n'est un jeudi). 
w00 n'est pas d\'efinie dans les sp\'ecifications ISO. Une semaine commence le Lundi 
et se termine le Dimanche.

Voici un exemple de ressource Schedule nomm\'ee {\bf WeeklyCycle} qui ex\'ecute 
un job de niveau Full chaque Dimanche \`a 1h05 et un job de niveau incr\'emental 
du Lundi au Samedi \`a 1h05 :

\footnotesize
\begin{verbatim}
Schedule {
  Name = "WeeklyCycle"
  Run = Level=Full sun at 1:05
  Run = Level=Incremental mon-sat at 1:05
}
\end{verbatim}
\normalsize

Voici un exemple de cycle mensuel :

\footnotesize
\begin{verbatim}
Schedule {
  Name = "MonthlyCycle"
  Run = Level=Full Pool=Monthly 1st sun at 1:05
  Run = Level=Differential 2nd-5th sun at 1:05
  Run = Level=Incremental Pool=Daily mon-sat at 1:05
}
\end{verbatim}
\normalsize

Le premier de chaque mois :

\footnotesize
\begin{verbatim}
Schedule {
  Name = "First"
  Run = Level=Full on 1 at 1:05
  Run = Level=Incremental on 2-31 at 1:05
}
\end{verbatim}
\normalsize

Toutes les dix minutes :

\footnotesize
\begin{verbatim}
Schedule {
  Name = "TenMinutes"
  Run = Level=Full hourly at 0:05
  Run = Level=Full hourly at 0:15
  Run = Level=Full hourly at 0:25
  Run = Level=Full hourly at 0:35
  Run = Level=Full hourly at 0:45
  Run = Level=Full hourly at 0:55
}
\end{verbatim}
\normalsize

\subsection*{Notes techniques sur les Schedules}
\index[general]{Schedules!Technical Notes on }
\index[general]{Technical Notes on Schedules }
\addcontentsline{toc}{subsection}{Notes techniques sur les Schedules}
Au niveau interne, Bacula consid\`ere un schedule en tant que bit masque. 
Il y a six masques et un champ minute pour chaque schedule. Les masques sont 
heure, jour du mois (mday), jour de la semaine (wday), semaine du mois (wom), 
et semaine de l'ann\'ee (woy). Le schedule est initialis\'e de fa\c {c}on \`a avoir les 
bits de chacun de ces masques positionn\'es, ce qui signifie qu'au d\'ebut de chaque 
heure, le job sera ex\'ecut\'e. Quand vous sp\'ecifiez un mois pour la premi\`ere 
fois, le masque est effac\'e et le bit correspondant au mois s\'electionn\'e est 
ajout\'e au masque. Si vous sp\'ecifiez un second mois, le bit correspondant 
est aussi ajout\'e. Ainsi, lorsque Bacula examine le masque pour voir si 
les bits plac\'es correspondent \`a la date courante, votre job ne sera ex\'ecut\'e 
que pendant les deux mois que vous avez sp\'ecifi\'es. De m\^eme, si vous sp\'ecifiez 
un horaire, le masque Heure est effac\'e et le bit correspondant \`a l'heure que 
vous avez sp\'ecifi\'ee est plac\'e, les minutes sont quant \`a elles stock\'ees dans le 
champ Minutes.

Pour chacun de vos schedules, vous pouvez visualiser le masque associ\'e 
gr\^ace \`a la commande  {\bf show schedules} du programme Console. 
Notez que le bit masque est "zero based", et que Dimanche est le premier 
jour de la semaine (bit 0)

\subsection*{La ressource FileSet }
\label{FileSetResource}
\index[general]{Resource!FileSet }
\index[general]{FileSet Resource }
\addcontentsline{toc}{subsection}{FileSet Resource}

La ressource FileSet d\'efinit les fichiers \`a inclure dans une sauvegarde. Pour 
chaque job de type sauvegarde, il est n\'ecessaire de d\'efinir au moins une 
ressource {\bf FileSet}. Un {\bf FileSet} consiste en une liste de fichiers 
ou r\'epertoires \`a inclure, une liste de fichiers ou r\'epertoires \`a exclure, et 
diverses options de sauvegardes telles que compression, chiffrement et 
signatures qui doivent \^etre appliqu\'ees \`a chaque fichier.

Toute modification de la liste des fichiers inclus provoque la cr\'eation par Bacula 
d'un nouveau FileSet (d\'efini par le nom et la somme de contr\^ole MD5 du contenu 
du paragraphe Include). Chaque fois qu'un nouveau FileSet est cr\'e\'e, Bacula 
s'assure que la premi\`ere sauvegarde est une Full.

\begin{description}

\item [FileSet]
   \index[dir]{FileSet }
   D\'ebut de la ressource FileSet. Au moins une ressource {\bf FileSet} doit 
   \^etre d\'efinie.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name  }
   Le nom de la ressource FileSet. Cette directive est requise.

\item [Ignore FileSet Changes = \lt{}yes|no\gt{}]
   \index[dir]{Ignore FileSet Changes  }
Si cette directive est activ\'ee ({\bf yes}), toute modification des listes 
d'inclusion ou d'exclusion du FileSet sera ignor\'ee et Bacula n'\'el\`evera 
pas la prochaine sauvegarde en Full. La valeur par d\'efaut est {\bf no}, ainsi, 
si vous modifiez une des listes d'inclusion ou d'exclusion du FileSet, Bacula 
forcera une sauvegarde Full pour assurer que tout soit bien sauvegard\'e 
proprement. Il n'est pas recommand\'e d'activer cette directive. Cette directive 
est disponible \`a partir de Bacula 1.35.4.

\item [{Include \ \{ [ Options \{\lt{}file-options\gt{}\} ...]
   \lt{}file-list\gt{} \} 
   }]
\index[dir]{Include \  \{ [ Options \{\lt{}file-options\gt{}\} ...]
\lt{}file-list\gt{} \}  }

\item [Options \ \{ \lt{}file-options\gt{} \} 
   ]
   \index[dir]{Options \  \{ \lt{}file-options\gt{} \}  }

\item [Exclude \ \{ \lt{}file-list\gt{} \}]
   \index[dir]{Exclude \  \{ \lt{}file-list\gt{} \} }
\end{description}
La ressource Include doit contenir une liste de r\'epertoires et/ou fichiers 
\`a traiter lors de la sauvegarde. Normalement, tous les fichiers trouv\'es dans 
tous les sous-r\'epertoires de tout r\'epertoire de la liste d'inclusion des 
fichiers seront sauvegard\'es. La ressource Include peut aussi comporter une 
ou plusieurs ressources Options qui sp\'ecifient des param\`etres tels que 
la compression \`a appliquer \`a tous les fichiers ou \`a n'importe quel sous ensemble 
de fichiers \`a sauvegarder.

Le nombre de ressources {\bf Include} par FileSet n'est pas limit\'e, chacune ayant 
sa propre liste de r\'epertoires et/ou fichiers \`a sauvegarder et ses propres 
param\`etres d\'efinis par une ou plusieurs ressources Options. La liste de fichiers 
{\bf file-list} consiste en un nom de fichier ou r\'epertoire par ligne.
Les noms de r\'epertoire doivent \^etre sp\'ecifi\'es sans slash final.

Vous devez toujours sp\'ecifier des chemins absolus pour tout fichier ou 
r\'epertoire que vous placez dans un FileSet. De plus, sur les machines Windows, 
vous devez {\bf toujours} pr\'efixer le r\'epertoire ou nom de fichier d'une 
sp\'ecification de disque (par exemple : {\bf c:/xxx}) en utilisant le s\'eparateur 
de r\'epertoire Unix (slash /).

Le comportement par d\'efaut de Bacula en ce qui concerne le traitement des 
r\'epertoires est de descendre r\'ecursivement dans chaque r\'epertoire 
et de sauvegarder tous les fichiers et sous-r\'epertoires. Par d\'efaut, Bacula 
ne suit pas les syst\`emes de fichiers transverses (en terminologie Unix, les 
points de montage). Ceci signifie que si vous sp\'ecifiez la partition racine 
( par exemple /), Bacula sauvegardera seulement la partition racine, et aucun 
des syst\`emes de fichiers mont\'es. De fa\c {c}on analogue, sur les syst\`emes Windows, 
vous devez expliciter chacun des disques que vous souhaitez sauvegarder (par 
exemple {\bf c:/} et {\bf d:/}...). De plus, au moins pour les syst\`emes 
Windows, il sera la plupart du temps n\'ecessaire d'encadrer chaque sp\'ecification 
de doubles quotes, particuli\`erement si le nom du r\'epertoire (ou du fichier) 
comporte des espaces. La commande {\bf df} des syst\`emes Unix vous fournira 
la liste des r\'epertoires qu'il vous faudra sp\'ecifier pour tout sauvegarder.
Voyez ci-dessous pour un exemple.

Soyez attentif \`a ne pas inclure un r\'epertoire deux fois, car il serait 
sauvegard\'e deux fois, ce qui gaspillerait l'espace sur votre p\'eriph\'erique 
de sauvegarde. Cette erreur est facile \`a commettre. Par exemple :

\footnotesize
\begin{verbatim}
  Include {
    File = /
    File = /usr
    Options { compression=GZIP }
  }
\end{verbatim}
\normalsize

Sur un syst\`eme Unix o\`u /usr est un sous r\'epertoire (plut\^ot qu'un syst\`eme de 
fichiers mont\'e), cette ressource Include sauvegarderait /usr deux fois.
Dans ce cas, sur les versions ant\'erieures \`a 1.32f-5-09Mar04, en raison 
d'un bug, vous ne pourriez restaurer les fichiers li\'es physiquement sauvegard\'es 
deux fois.

Si vous avez utilis\'e des versions de Bacula ant\'erieures \`a 1.34.3, vous noterez 
ces modifications dans la syntaxe des FileSets :

\begin{enumerate}
\item il n'y a pas de signe \'egale (=) apr\`es le "include" et avant l'accolade 
ouvrante (\{) ;
\item chaque r\'epertoire (ou nom de fichier) \`a sauvegarder est pr\'ec\'ed\'e de 
"{\bf File =}" ;
\item les options qui apparaissaient pr\'ec\'edemmant sur la ligne Include doivent 
d\'esormais \^etre sp\'ecifi\'ees dans leur propre ressource Options.
\end{enumerate}

La ressource Options est optionnelle, mais lorsqu'elle est sp\'ecifi\'ee, elle doit 
contenir une liste de lignes "{\bf mot-clef=valeur}" relatives aux options \`a appliquer 
\`a la liste de fichiers/r\'epertoires. Plusieurs ressources Options peuvent \^etre 
sp\'ecifi\'ees l'une apr\`es l'autre. Lorsqu'un fichier se trouve dans un dossier 
sp\'ecifi\'e, les options sont appliqu\'ees au nom de fichier pour savoir s'il doit 
\^etre sauvegard\'e, et comment. Les ressources Options sont appliqu\'ees dans l'ordre 
o\`u elles appara\^issent dans le FileSet jusqu'\`a ce qu'il y en ait une qui corresponde. 
Une ressource Options qui ne contient pas de directive  {\bf wild} (sp\'ecification 
de caract\`ere joker, voir ci-dessous) est consid\'er\'ee comme concernant tous les 
fichiers. Il est important de bien comprendre ceci, car une fois que Bacula a 
d\'etermin\'e que des Options s'appliquent \`a un fichier donn\'e, ce fichier sera 
sauvegard\'e sans tenir compte d'aucunes des \'eventuelles autres ressources Options. 
Ceci signifie que toute ressource Options avec caract\`eres joker doit appara\^itre 
avant une ressource Options sans caract\`eres joker. 

Si, pour quelque raison, Bacula applique toutes les ressources Options \`a un 
fichier sans qu'aucune ne corresponde (en g\'en\'eral \`a cause de caract\`eres joker 
qui ne correspondent pas), par d\'efaut Bacula sauvegardera le fichier. Ceci est 
assez logique si vous consid\'erez la situation sans options, o\`u vous souhaitez 
que tout soit sauvegard\'e. De plus, dans le cas ou aucune correspondance n'est  
trouv\'ee, Bacula utilise les options de la derni\`ere ressource Options. Par cons\'equent, 
si vous souhaitez d\'efinir un jeu d'options par d\'efaut, vous devriez les placer 
dans la derni\`ere ressource Options.

Les directives disponibles pour les ressources Options sont les suivantes :

\begin{description}
   \item [compression=GZIP]
   \index[dir]{compression }
   Tous les fichiers sauvegard\'es sont compress\'es (NDT : compression logicielle, 
   par opposition \`a la compression mat\'erielle effectu\'ee par le lecteur) au 
   format GNU ZIP. Chaque fichier est compress\'e individuellement par le File 
   Daemon. S'il y a un probl\`eme \`a la lecture d'une cartouche au niveau de 
   l'enregistrement d'un fichier, il affectera tout au plus ce fichier et aucun 
   des autres fichiers de la cartouche. La plupart du temps, cette option n'est 
   pas n\'ecessaire si vous avez un lecteur de bandes moderne qui applique sa 
   propre compression. En fait, si vous activez les deux compressions 
   simultan\'ement, il se peut que vos fichiers occupent plus d'espace sur le 
   volume qu'avec une seule.

   La compression logicielle est particuli\`erement int\'eressante lorsque vous 
   sauvegardez sur disque, et peut \^etre d'un grand secours si vous avez un 
   ordinateur rapide mais un r\'eseau lent.

   La sp\'ecification {\bf GZIP}  utilise le niveau de compression six par d\'efaut 
   (i.e. {\bf GZIP} est \'equivalent \`a {\bf GZIP6}). Si vous voulez utiliser un 
   niveau diff\'erent (de 1 \`a 9), vous pouvez le sp\'ecifier en ajoutant le num\'ero 
   du niveau voulu \`a la fin du mot {\bf GZIP}, sans espace. Ainsi, {\bf compression=GZIP1} 
   d\'esigne la compression la moins efficace, mais l'algorithme le plus rapide, 
   tandis que {\bf compression=GZIP9} est le niveau de compression le plus \'elev\'e, 
   mais requi\`ere plus de puissance de calcul. Selon la documentation GZIP, les 
   niveaux de compression sup\'erieurs \`a 6 ne procurent g\'en\'eralement que peu 
   de compression suppl\'ementaire alors qu'ils sont plut\^ot exigeants en puissance 
   de calcul.

   \item [signature=SHA1]
   \index[dir]{signature }
   La signature SHA1 est calcul\'ee pour tous les fichiers sauvegard\'es. 
   L'algorithme SHA1 est 
   r\'eput\'e plus lent que MD5, mais bien meilleur d'un point de vue cryptographique 
   (i.e. beaucoup moins de collisions et probabilit\'e de piratage bien inf\'erieure.). 
   Nous recommandons fortement d'activer l'une ou l'autre des options SHA1 ou MD5 
   par d\'efaut pour tous les fichiers. Notez que seule l'une de ces deux options 
   peut \^etre activ\'ee pour tout fichier.
   
   \item [signature=MD5]
   \index[dir]{signature }
   La signature MD5 est calcul\'ee pour tous les fichiers sauvegard\'es. Activer cette 
   option r\'esulte en une charge CPU suppl\'ementaire de l'ordre de 5\% pour chaque 
   fichier sauvegard\'e. D'autre part, la signature MD5 ajoute 16 octets 
   suppl\'ementaires au catalogue pour chaque fichier sauvegard\'e. Nous recommandons 
   fortement d'activer l'une ou l'autre des options SHA1 ou MD5 par d\'efaut pour tous
   les fichiers. 

   \item [verify=\lt{}options\gt{}]
   \index[dir]{verify }
   Les "options-lettres" sont utilis\'ees lors de l'ex\'ecution de jobs de type {\bf Verify}
   de niveau {\bf Level=Catalog} et de niveau {\bf Level=DiskToCatalog}. Les options
   peuvent \^etre n'importe quelle combinaison de ces lettres.

\begin{description}

\item [i]
   compare les inodes  

\item [p]
   compare bits de permissions  

\item [n]
   compare le nombre de liens  

\item [u]
   compare les user ids  

\item [g]
   compare les group ids  

\item [s]
   compare les tailles  

\item [a]
   compare les date d'acc\`es (access time)  

\item [m]
   compare les dates de modification (st\_mtime)  

\item [c]
   compare les dates de changement (st\_ctime)  

\item [d]
   signale tout fichier dont la taille a diminu\'e  

\item [5]
   compare les signatures MD5  

\item [1]
   compare les signatures SHA1  
\end{description}

Le jeu d'options {\bf pins5} (qui compare les bits de permissions, les inodes, 
les nombres de liens, la taille des fichiers et les signatures MD5) est tr\`es 
utile pour des jobs de type verify de niveaux {\bf Level=Catalog} ou 
{\bf Level=DiskToCatalog}.

\item [{\bf onefs=yes|no}]
   \index[dir]{onefs }
   Si cette option est activ\'ee (valeur {\bf yes}, par d\'efaut), Bacula ne 
   changera pas de syst\`eme de fichiers. Autrement dit, il ne sauvegardera pas 
   les syst\`emes de fichiers mont\'es sur des sous-r\'epertoires. Si vous souhaitez 
   sauvegarder plusieurs syst\`emes de fichiers, vous pouvez les \'enum\'erer 
   explicitement. Une autre possibilit\'e consiste \`a d\'esactiver l'option onefs 
   ({\bf onefs=no}) afin que Bacula sauvegarde les syst\`emes de fichiers mont\'es 
   trouv\'es dans les r\'epertoires list\'es dans votre FileSet. Ainsi, si vous avez 
   des syst\`emes de fichiers NFS ou Samba mont\'es sur un r\'epertoire list\'e dans le 
   FileSet, ils seront aussi sauvegard\'es. En principe, il est pr\'ef\'erable 
   d'activer cette option et de nommer explicitement chaque syst\`eme de fichier 
   que vous voulez sauvegarder. Ce nommage explicite \'evite le risque de tomber 
   dans une boucle infinie de syst\`emes de fichiers. Voyez l'exemple ci-dessous 
   pour plus de d\'etails.

\label{portable}

\item [{\bf portable=yes|no}]
   \index[dir]{portable }
   Si cette option est activ\'ee (la valeur par d\'efaut est {\bf no}), le File Daemon 
   sauvegarde les fichiers win32 dans un format portable, mais tous les attributs 
   de fichiers win32 ne seront pas sauvegard\'es ni restaurables. La valeur par 
   d\'efaut est {\bf no}, ce qui signifie que sur les syst\`emes Win32, les donn\'ees 
   sont sauvegard\'ees en utilisant les appels Windows API et sur les WinNT/2k/XP, 
   tous les attributs de s\'ecurit\'e et de propri\'et\'e sont correctement sauvegard\'es 
   et restaur\'es. Cependant, ce format n'est pas portable aux autres syst\`emes 
   -- par exemple UNIX, Win95/98/Me. Lors de la sauvegarde de syst\`emes Unix, 
   cette option est ignor\'ee, et \`a moins que vous n'ayez un besoin sp\'ecifique de 
   portabilit\'e de vos sauvegardes, nous recommandons d'accepter la valeur par 
   d\'efaut ({\bf no}) de sorte qu'un maximum d'informations concernant vos 
   fichiers soit sauvegard\'e.

\item [{\bf recurse=yes|no}]
   \index[dir]{recurse }
   Si cette option est activ\'ee (la valeur par d\'efaut est {\bf yes}), Bacula 
   descend r\'ecursivement dans tout sous-r\'epertoire trouv\'e, \`a moins qu'il ne soit 
   explicitement exclu par une d\'efinition {\bf exclude}. Si vous d\'esactivez cette 
   option ({\bf recurse=no}), Bacula sauvegardera toutes les entr\'ees de sous-
   r\'epertoires, mais n'entrera pas dans ces sous-r\'epertoires, et ainsi ne 
   sauvegardera pas les fichiers ou \'epertoires contenus dans ces sous-r\'epertoires.
   En principe, vous pr\'ef\`ererez la valeur par d\'efaut ({\bf yes}).

\item [{\bf sparse=yes|no}]
   \index[dir]{sparse }
   Cette option active un code sp\'ecial qui d\'etecte les fichiers clairsem\'es tels 
   ceux cr\'e\'es par ndbm. Elle est d\'esactiv\'ee par d\'efaut ({\bf sparse=no}), de sorte 
   qu'aucun contr\^ole n'est fait pour rechercher les fichiers clairsem\'es. Vous 
   pouvez l'activer sans danger sur des fichiers non clairsem\'es, cependant elle 
   entra\^ine une l\'eg\`ere charge suppl\'ementaire pour la d\'etection de tampons remplis 
   de z\'eros (buffers of all zero), et un l\'eger surplus d'espace sur l'archive 
   de sortie sera utilis\'e pour ssauver les adresses de recherche de chaque 
   enregistrement non-nul trouv\'e.

{\bf Restrictions:} Bacula lit les fichiers dans des tampons de 32K. Si le tampon 
entier est rempli de z\'eros, il sera trait\'e en tant que bloc clairsem\'e, et ne sera pas 
\'ecrit sur la cartouche. En revanche, si une partie quelconque du tampon est 
non-nulle, le tampon sera int\'egralement copi\'e sur la cartouche, avec \'eventuellement 
des secteurs de disque (g\'en\'eralement 4098 octets) enti\`erement nuls. La d\'etection par 
Bacula des blocs clairsem\'es a lieu sur des blocs de 32K plut\^ot que sur des blocs de 
taille d\'etermin\'ee par le syst\`eme. Si quelqu'un consid\`ere ceci comme un r\'eelle 
probl\`eme, merci d'envoyer une demande de modification en exposant les raisons.
Ce code est apparu avec la version 1.27 de Bacula. 

Si vous n'\^etes pas familier avec les notions de fichiers clairsem\'es, prenons 
pour exemple un fichier o\`u vous \'ecrivez 512 octets \`a l'adresse 0, puis 512 octets 
\`a l'adresse 1 million. Le syst\`eme d'exploitation n'allouera que deux blocs, et 
rien n'est allou\'e pour l'espace vide. Pourtant, lorsque vous lisez le fichier 
clairsem\'e, le syst\`eme retourne tous les z\'eros comme si l'espace \'etait allou\'e, 
et si vous sauvegardez un tel fichier, vous utiliserez beaucoup d'espace 
sur le volume pour \'ecrire des z\'eros. Pire encore, lorsque vous restaurez ce 
fichier \`a son emplacement initial, tous les emplacements pr\'ec\'edemment vides 
seront cette fois allou\'es, occupant ainsi beaucoup plus d'espace disque.
En activant l'option {\bf sparse}, Bacula recherchera sp\'ecifiquement l'espace 
vide dans les fichiers afin d'\'eviter ces inconv\'enients. Le prix \`a payer est que 
Bacula doit d'abord examiner chaque bloc lu avant de l'\'ecrire. Sur un syst\`eme lent, 
ceci peut-\^etre important. Si vous suspectez certains de vos fichiers d'\^etre 
clairsem\'es, vous devriez mesurer les performances et gains d'espace avec et 
sans l'options, ou ne l'activer que pour les fichiers effectivement 
clairsem\'es.

\label{readfifo}

\item [{\bf readfifo=yes|no}]
   \index[dir]{readfifo }
Cette option, si elle est activ\'ee, indique au client de lire les donn\'ees 
(lors d'une sauvegarde) et de les \'ecrire (lors d'une restauration) sur 
un FIFO (pipe) explicitement explicitement mentionn\'e dans le FileSet.
Dans ce cas, vous devez avoir un programme actif qui \'ecrit sur ce FIFO 
dans le cas d'une sauvegarde, ou qui le lit dans le cas d'une restauration.
(Ceci peut \^etre accompli par la directive {\bf RunBeforeJob}). Si cette 
condition n'est pas satisfaite, Bacula demeurera en suspens ind\'efiniment 
en lecture/\'ecriture du FIFO. Lorsque cette option est d\'esactiv\'ee (par d\'efaut), 
le Client sauvegarde simplement l'entr\'ee du r\'epertoire pour le FIFO.

\item [{\bf mtimeonly=yes|no}]
   \index[dir]{mtimeonly }
Cette option, si elle est activ\'ee, indique au client que la s\'election de fichiers 
lors d'une sauvegarde incr\'ementale ou diff\'erentielle ne doit se r\'ef\'erer qu'aux valeurs 
de  st\_mtime du paquet stat(). La valeur par d\'efaut est {\bf no}, ce qui signifie 
que la s\'election de fichiers \`a sauvegarder se base sur les deux valeurs st\_mtime et 
st\_ctime. En g\'en\'eral, il n'est pas recommand\'e d'activer cette option.
   
\item [{\bf keepatime=yes|no}]
   \index[dir]{keepatime }
Avec cette option activ\'ee, Bacula r\'etablit le champ st\_atime (date d'acc\`es) des 
fichiers qu'il sauvegarde \`a leur valeur d'avant la sauvegarde. Cette option 
n'est g\'en\'eralement pas recommand\'ee car il existe peu de programmes qui utilisent 
st\_atime, et la charge de la sauvegarde se trouve augment\'ee par les appels 
syst\`emes n\'ecessaires pour r\'etablir les dates. (Je ne suis pas sur que ceci 
fonctionne sous Win32).

\item [{\bf wild=\lt{}string\gt{}}]
   \index[dir]{wild }
Sp\'ecifie une cha\^ine de caract\`eres jokers \`a appliquer aux fichiers. Notez 
que si {\bf Exclude} n'est pas activ\'ee, cette cha\^ine s\'electionnera les fichiers 
\`a sauvegarder. Si au contraire {\bf Exclude=yes} est sp\'ecifi\'e, la cha\^ine 
s\'electionnera les fichiers \`a exclure de la sauvegarde. Plusieurs directives 
wild-card peuvent \^etre sp\'ecifi\'ees et sont appliqu\'ees s\'equentiellement 
jusqu'\`a ce que l'une d'elles corresponde.

\item [{\bf regex=\lt{}string\gt{}}]
   \index[dir]{regex }
Sp\'ecifie une expression r\'eguli\`ere \'etendue POSIX \`a appliquer aux fichiers.
Cette directive est disponible \`a partir de Bacula 1.35. Si {\bf Exclude} n'est 
 pas activ\'ee, cette expression r\'eguli\`ere s\'electionnera les fichiers \`a 
 sauvegarder. Si au contraire {\bf Exclude=yes} est sp\'ecifi\'e, elle s\'electionnera 
 les fichiers \`a exclure de la sauvegarde. Plusieurs directives regex  peuvent \^etre 
 sp\'ecifi\'ees et sont appliqu\'ees s\'equentiellement jusqu'\`a ce que l'une d'elles corresponde.

\item [{\bf exclude=yes|no}]
   \index[dir]{exclude }
Lorsque cette option est activ\'ee, tout fichier qui correspond aux options est exclu de 
la sauvegarde. La valeur par d\'efaut est {\bf no}.

\label{ACLSupport}

\item [{\bf aclsupport=yes|no}]
   \index[dir]{aclsupport }
   Si cette option est activ\'ee, et si vous avez install\'e la librarie POSIX {\bf libacl} 
   sur votre syst\`eme, Bacula sauvegardera Listes de Contr\^oles d'Acc\`es (ACL) UNIX des 
   fichiers et r\'epertoires telles que d\'efinies dans IEEE Std 1003.1e version 17 et 
   "POSIX.1e" (abandonn\'e). Cette fonction n'est disponible que sur UNIX et d\'epend de 
   la librairie ACL. Bacula est automatiquement compil\'e avec le support ACL si la 
   librairie {\bf libacl} est install\'ee sur votre syst\`eme (ceci est report\'e dans 
   le fichier config.out). Lors de la restauration, Bacula tentera de restaurer les 
   ACLs. S'il n'y a pas de support ACL sur le syst\`eme cible, Bacula ne restaurera que les 
   fichiers et r\'epertoires sans les informations ACL. Veuillez noter que si vous 
   sauvegardez un syst\`eme de fichiers EXT3 ou XFS avec le support des ACLs, et que vous 
   restaurez vers un syst\`eme de fichiers sans ACLs (tel , peut-\^etre reiserfs), les 
   ACLs seront ignor\'ees.

\end{description}

{\bf \lt{}file-list\gt{}} est une liste de r\'epertoires et/ou noms de fichiers sp\'ecifi\'es 
avec la directive  {\bf File =}. Pour inclure des noms contenant des espaces, 
entourez-les de guillemets (doubles quotes).

Il existe quelques notations particuli\`eres pour sp\'ecifier des fichiers et r\'epertoires 
dans une liste de fichiers {\bf file-list}. Les voici :

\begin{itemize}
\item Tout nom pr\'ec\'ed\'e d'un signe "at" (@) est compris comme le nom d'un fichier, 
   lequel contient une liste de fichiers, chacun pr\'ec\'ed\'e d'une directive "File=". 
   Ce fichier est lu lorsque le fichier de configuration est parcouru au d\'emarrage 
   du Director. Notez bien que le fichier est lu sur sur la machine qui h\'eberge le 
   Director (autrement dit, le serveur de sauvegardes) et non sur le Client.
   En fait, le "@NomDeFichier" peut appara\^itre n'importe o\`u dans le fichier de 
   configuration o\`u un objet pourrait \^etre lu, le contenu du fichier d\'esign\'e sera 
   logiquement ins\'er\'e \`a l'emplacement du "@NomDeFichier". Ce qui doit figurer dans le 
   fichier d\'epend de l'emplacement du "@NomDeFichier" au sein du fichier de 
   configuration.

\item Tout nom pr\'ec\'ed\'e d'une barre verticale (|) est compris comme le nom d'un 
   programme. Ce programme sera ex\'ecut\'e sur la machine qui h\'eberge le Director au 
   moment o\`u le job d\'emarre (et non lorsque le Director lit son fichier de 
   configuration), et toute sortie de ce programme sera per\c {c}u en tant que liste 
   de fichiers ou r\'epertoires, un par ligne, \`a inclure. Ceci vous permet d'avoir un 
   job qui, par exemple, inclue toutes les partitions locales m\^eme si vous changez le 
   partitionnement en ajoutant des disques. En g\'en\'eral, il vous faudra pr\'ec\'eder 
   votre commande d'un "{\bf sh -c}" afin qu'elle soit invoqu\'ee par un shell. 
   Ce ne sera pas le cas si vous invoquez un script comme dans le second exemple 
   ci-dessous.  Vous devez aussi prendre soin d'\'echapper (pr\'ec\'eder d'un \textbackslash{}) 
   les caract\`eres jokers, les caract\`eres du shell, ainsi que toute espace dans votre 
   commande. Si vous utilisez des simples quotes (') dans des doubles quotes (``), 
   Bacula traitera tout ce qui est entre simples quotes comme un seul champ, et il ne 
   dera donc pas n\'ecessaire d'\'echapper les espaces. En g\'en\'eral, parvenir \`a avoir 
   toutes les quotes et \'echappements corrects est un calvaire, comme vous pouvez 
   le constater dans le prochain exemple. Par cons\'equent, il est souvent plus facile 
   de tout mettre dans un fichier et d'utiliser simplement le nom de fichier dans 
   Bacula. Dans ce cas le "{\bf sh -c}" ne sera plus n\'ecessaire, pourvu que la 
   premi\`ere ligne du fichier soit {\bf \#!/bin/sh}.


Par exemple : 

\footnotesize
\begin{verbatim}
 
Include {
   Options { signature = SHA1 }
   File = "|sh -c 'df -l | grep \"^/dev/hd[ab]\" | grep -v \".*/tmp\" \
      | awk \"{print \\$6}\"'"
}
\end{verbatim}
\normalsize

produira une liste de toutes les partitions locales sur un syst\`eme RedHat Linux. 
Notez que la ligne si dessus a \'et\'e coup\'ee, mais devrait normalement \^etre \'ecrite 
sur une seule ligne. Quoter est un r\'eel probl\`eme car vous devez d'une part le faire 
pour Bacula - ce qui consiste \`a pr\'ec\'eder tout \textbackslash{} et tout '' avec un 
\textbackslash{} - et d'autre part pour les commandes shell. En d\'efinitive, il est 
probablement plus ais\'e d'ex\'ecuter un petit fichier tel que :

\footnotesize
\begin{verbatim}
Include {
  Options {
    signature=MD5
  }
  File = "|my_partitions"
}
\end{verbatim}
\normalsize

o\`u le fichier my\_partitions contient :

\footnotesize
\begin{verbatim}
#!/bin/sh
df -l | grep "^/dev/hd[ab]" | grep -v ".*/tmp" \
      | awk "{print \$6}"
\end{verbatim}
\normalsize

Si la barre verticale (|) devant "my\_partitions" est pr\'ec\'ed\'ee d'une barre oblique 
(\textbackslash{}), le programme sera ex\'ecut\'e sur la machine cliente plut\^ot que sur 
la machine h\'ebergeant le Director -- (ceci est impl\'ement\'e, mais n'est pas compl\`etement 
test\'e, et a \'et\'e rapport\'e fonctionner sous Windows). Veuillez noter que si le nom de 
fichier est donn\'e entre quotes, vous devrez utiliser deux barres obliques. Voci un 
exemple, fourni par John Donagher, qui sauvegarde toutes les partitions UFS locales 
sur un syst\`eme distant :

\footnotesize
\begin{verbatim}
FileSet {
  Name = "All local partitions"
  Include {
    Options { signature=SHA1; onefs=yes; }
    File = "\\|bash -c \"df -klF ufs | tail +2 | awk '{print \$6}'\""
  }
}
\end{verbatim}
\normalsize

Notez que deux barres obliques \textbackslash{} sont requises apr\`es les doubles quotes 
(l'une pr\'eserve l'autre). Si vous utilisez Linux, changez simplement {\bf ufs} en {\bf ext3} 
(ou votre syst\`eme de fichiers pr\'ef\'er\'e) et l'affaire sera dans le sac.

\item Tout \'el\'ement de la liste de fichiers file-list pr\'ec\'ed\'e par un signe "inf\'erieur" (\lt{}) 
est interpr\'et\'e comme un fichier qui sera lu sur la machine qui h\'eberge le Director 
au moment o\`u le job d\'emarre. Son contenu est suppos\'e \^etre une liste de r\'epertoires ou 
fichiers, un par ligne, \`a inclure dans la sauvegarde. Les noms ne doivent pas \^etre quot\'es, m\^eme 
s'ils comportent des espaces. Cette fonction vous permet de modifier le fichier externe, 
et ainsi ce qui est sauvegard\'e sans avoir \`a red\'emarrer Bacula comme il le faudrait avec 
le modificateur @ d\'ecrit plus haut.

Si vous pr\'ec\'edez le signe "inf\'erieur" (\lt{}) d'une barre oblique \textbackslash{}\lt{}, le 
fichier mentionn\'e sera lu sur la machine cliente au lieu de celle h\'ebergeant le Director. 
Veullez noter que si le nom de fichier est donn\'e entre quotes, il vous faudra utiliser deux 
barres obliques.

\item Si vous sp\'ecifiez explicitement un block device (NDT ?) tel que {\bf /dev/hda1}, alors 
Bacula consid\`erera ceci comme une partition raw \`a sauvegarder. Dans ce cas, vous \^etes 
fortement invit\'e \`a utiliser l'option {\bf sparse=yes}, faute de quoi vous sauvegarderez 
la partition enti\`ere plut\^ot que seulement les donn\'ees r\'eellement contenues dans la 
partition. Par exemple :

\footnotesize
\begin{verbatim}
Include {
  Options { signature=MD5; sparse=yes }
  File = /dev/hd6
}
\end{verbatim}
\normalsize

va sauvegarder les donn\'ees de la partition /dev/hd6.

will backup the data in device /dev/hd6.  

Ludovic Strappazon a fait remarquer que cette fonction pouvait servir \`a sauvegarder 
un disque Microsoft Windows. Il suffit de booter avec un Linux Rescue Disk, puis de 
charger un client Bacula statiquement li\'e comme d\'ecrit dans le chapitre 
\ilink{ Disaster Recovery avec Bacula}{_ChapterStart38} de ce manuel. Sauvegardez alors 
la partition compl\`ete. En cas de d\'esastre, vous pouvez alors restaurer la partition 
d\'esir\'ee en bootant une fois encore sur le Linux Rescue Disk et en utilisant le 
client Bacula  statiquement li\'e.


\item Si vous sp\'ecifiez explicitement un p\'eriph\'erique FIFO nomm\'e (cr\'e\'e avec mkfifo), 
ets si vous ajoutez l'option {\bf readfifo=yes}, Bacula lira le FIFO et sauvegardera ses 
donn\'ees sur le volume. Par exemple :

\footnotesize
\begin{verbatim}
Include {
  Options {
    signature=SHA1
    readfifo=yes
  }
  File = /home/abc/fifo
}
\end{verbatim}
\normalsize

si {\bf /home/abc/fifo} est un FIFO, Bacula va l'ouvrir, le lire, et stocker 
toutes les donn\'ees ainsi obtenues sur le volume. Notez qu'il faut que vous ayez 
un processus qui \'ecrit sur le FIFO, faute de quoi Bacula restera en suspens, et 
abandonnera au bout d'une minute pour passer au fichier suivant. Les donn\'ees 
lues peuvent \^etre de nature quelconque puisque Bacula les traite comme un flux.

Cette fonction est un excellent moyen de faire une sauvegarde "\`a chaud" d'une 
tr\`es grosse base de donn\'ees. Vous pouvez utiliser la directive {\bf RunBeforeJob} 
pour cr\'eer le FIFO et d\'emarrer un programme qui lit dynamiquement votre base de 
donn\'ees et l'\'ecrit sur le FIFO. Bacula l'\'ecrira alors sur le volume.

Lors de l'op\'eration de restauration, l'inverse se produit : apr\`es que Bacula ait cr\'e\'e 
le FIFO, s'il y avait des donn\'ees stock\'ees par son biais (inutile de les lister 
explicitement ni d'ajouter aucune option), elles seront renvoy\'ees vers le FIFO. 
Par cons\'equent, s'il existe un tel FIFO \`a restaurer, vous devez vous assurer 
qu'il y a un programme lecteur ou Bacula se bloquera et passera au fichier suivant 
apr\`es une minute.

\end{itemize}


Voici un exemple de d\'efinition de ressource FileSet valide. Notez que le premier 
Include  ins\`ere le contenu du fichier {\bf /etc/backup.list} lors du d\'emarrage 
de Bacula (i.e. le @). 

\footnotesize
\begin{verbatim}
FileSet {
  Name = "Full Set"
  Include {
    Options {
      Compression=GZIP
      signature=SHA1
      Sparse = yes
    }
    File = @/etc/backup.list
  }
  Include {
     Options {
        wild = *.o
        Exclude = yes
     }
     File = /root/myfile
     File = /usr/lib/another_file
  }
}
\end{verbatim}
\normalsize

Notez que dans l'exemple ci-dessus, tous les fichiers mentionn\'es dans 
/etc/backup.list seront compress\'e avec GZIP, qu'une signature SHA1 sera 
calcul\'ee sur le contenu des fichiers (leurs donn\'ees), et que la prise en 
charge particuli\`ere des fichiers clairsem\'es (sparse) s'appliquera.

Les deux r\'epertoires /root/myfile et /usr/lib/another\_file seront aussi 
sauvegard\'es sans aucune option, mais tous les fichiers \`a extension  {\bf .o} 
de ces r\'epertoires seront exlus de la sauvegarde.  

Supposons que vous vouliez sauvegarder tout sauf {\bf /tmp} sur votre syst\`eme.
La commande {\bf df} vous fournit le r\'esultat suivant :

\footnotesize
\begin{verbatim}
[kern@rufus k]$ df
Filesystem      1k-blocks      Used Available Use% Mounted on
/dev/hda5         5044156    439232   4348692  10% /
/dev/hda1           62193      4935     54047   9% /boot
/dev/hda9        20161172   5524660  13612372  29% /home
/dev/hda2           62217      6843     52161  12% /rescue
/dev/hda8         5044156     42548   4745376   1% /tmp
/dev/hda6         5044156   2613132   2174792  55% /usr
none               127708         0    127708   0% /dev/shm
//minimatou/c$   14099200   9895424   4203776  71% /mnt/mmatou
lmatou:/          1554264    215884   1258056  15% /mnt/matou
lmatou:/home      2478140   1589952    760072  68% /mnt/matou/home
lmatou:/usr       1981000   1199960    678628  64% /mnt/matou/usr
lpmatou:/          995116    484112    459596  52% /mnt/pmatou
lpmatou:/home    19222656   2787880  15458228  16% /mnt/pmatou/home
lpmatou:/usr      2478140   2038764    311260  87% /mnt/pmatou/usr
deuter:/          4806936     97684   4465064   3% /mnt/deuter
deuter:/home      4806904    280100   4282620   7% /mnt/deuter/home
deuter:/files    44133352  27652876  14238608  67% /mnt/deuter/files
\end{verbatim}
\normalsize

Si vous vous contentez de sp\'ecifier {\bf /} dans votre liste d'inclusions, 
Bacula ne sauvegardera que le syst\`eme de fichiers {\bf /dev/hda5}. Pour 
sauvegarder tous vos syst\`emes de fichiers sans inclure les syst\`emes de fichiers 
mont\'es Samba ou NFS et en excluant /tmp, /proc, .journal, et .autofsck, que 
vous ne voulez ni sauvegarder ni restaurer, vous pouvez utiliser ce qui suit :

\footnotesize
\begin{verbatim}
FileSet {
  Name = Include_example
  Include {
    Options {
       wild = /proc
       wild = /tmp
       wild = \.journal
       wild = \.autofsck
       exclude = yes
    }
    File = /
    File = /boot
    File = /home
    File = /rescue
    File = /usr
  }
}
\end{verbatim}
\normalsize

/tmp \'etant sur son propre syst\`eme de fichiers et n'\'etant pas explicitement nomm\'e 
dans la liste d'inclusion, il n'est pas n\'ecessaire de le sp\'ecifier dans la liste 
d'exclusion. Cependant, il peut \^etre pr\'ef\'erable de le faire malgr\'e tout par 
souci de clart\'e et au cas o\`u il ne serait plus sur sa propre partition apr\`es un 
remplacement de disques.

Ayez conscience qu'il peut \^etre {\bf tr\`es} dangereux de permettre \`a Bacula de traverser ou 
changer de syst\`eme de fichiers au gr\'e des ppoints de montage. Par exemple, avec ce qui suit : 

\footnotesize
\begin{verbatim}
FileSet {
  Name = "Bad example"
  Include {
    Options { onefs=no }
    File = /mnt/matou
  }
}
\end{verbatim}
\normalsize

vous sauvegardez une partition NFS mont\'ee ({\bf /mnt/matou}), et puisque 
{\bf onefs} est d\'esactiv\'ee, Bacula traverse les syst\`emes de fichiers. 
Si jamais {\bf /mnt/matou} contient lui m\^eme un point de montage o\`u le syst\`eme 
de fichiers de la machine sauvegard\'ee est mont\'e, ce qui est souvent le cas, 
vous vous retrouvez pris dans un boucle r\'ecursive, et la sauvegarde ne se 
terminera jamais.

Le FileSet suivant sauvegarde une partition raw :

\footnotesize
\begin{verbatim}
FileSet {
  Name = "RawPartition"
  Include {
    Options { sparse=yes }
    File = /dev/hda2
  }
}
\end{verbatim}
\normalsize

Lorsque vous sauvegardez et restaurez une partition raw, vous devriez vous 
assurer qu'aucun autre processus, y compris le syst\`eme, n'\'ecrit sur cette 
partition. En guise de pr\'ecaution, nous recommandons ardemment de ne sauvegarder 
en mode raw que des partitions non mont\'ees, ou mont\'ees en lecture seule. Ceci peut 
\^etre fait si n\'ecessaire avec la directive {\bf RunBeforeJob}.

\label{win32}

\subsection*{Consid\'erations sur les FileSets Windows}
\index[general]{FileSets!Windows Considerations for }
\index[general]{Windows Considerations for FileSets }
\addcontentsline{toc}{subsection}{Windows Considerations for FileSets}

Si vous saisissez des noms de fichiers Windows, les chemins des r\'epertoires devraient 
\^etre pr\'ec\'ed\'es de double-points (comme dans "c:"). Cependant, les s\'eparateurs de 
champs doivent \^etre sp\'ecifi\'es selon la convention Unix (c'est \`a dire, la barre oblique 
avant : "/"). Si vous souhaitez inclure une apostrophe dans un nom de fichier, pr\'ec\'edez-la 
d'une barre oblique arri\`ere (\textbackslash{}\textbackslash{}). Par exemple, vous pourriez 
utiliser ce qui suit pour sauvegarder le r\'epertoire "My Documents" d'une machine Windows :

\footnotesize
\begin{verbatim}
FileSet {
  Name = "Windows Set"
  Include {
    Options {
       wild = *.obj
       wild = *.exe
       exclude = yes
     }
     File = "c:/My Documents"
  }
}
\end{verbatim}
\normalsize

Pour que les listes d'exclusion fonctionnent correctement sous Windows, vous devez 
observer les r\`egles suivante :

\begin{itemize}
\item les noms de fichiers sont sensibles \`a la casse, aussi vous devez utilise la 
casse correcte ;
\item vous ne devez pas sp\'ecifier de barre oblique finale pour exclure un r\'epertoire ;
\item si vos noms de fichiers comportent des espaces, vous devez les encadrer de 
quillemets. Les barres obliques arri\`eres (\textbackslash{}\textbackslash{}) ne 
fonctionnent pas ;
\item si vous utilisez l'ancienne syntaxe des listes d'exclusion (mentionn\'ee ci-dessous), 
vous ne devriez pas sp\'ecifier la lettre r\'ef\'eran\c {c}ant le disque dans une liste d'exclusion. 
La nouvelle syntaxe d\'ecrite ci-dessus devrait fonctionner correctement en incluant la lettre 
du disque.
\end{itemize}

Merci \`a Thiago Lima pour nous avoir r\'esum\'e les points ci-dessus. Si vous rencontrez 
des difficult\'es pour faire fonctionner vos listes d'inclusion ou d'exclusion, 
songez \`a utiliser la commande {\bf estimate job=xxx listing} document\'ee 
dans le chapitre \ilink{Console chapter}{estimate} de ce manuel.

Sur les syst\`emes Win32, si vous d\'eplacez un r\'epertoire ou si vous renommez 
un fichier de la liste \`a sauvegarder, et si une Full a d\'ej\`a eu lieu, Bacula 
ne saura reconna\^itre qu'il existe de nouveaux fichiers \`a sauvegarder lors d'une 
incr\'ementale ou d'une diff\'erentielle (faites-en le reproche \`a Microsoft, pas \`a moi !). 
Pour pallier \`a ce probl\`eme, veuillez copier tout r\'epertoire ou fichier de la 
zone sauvegard\'ee. Si vous ne disposez pas de suffisamment d'espace disque, 
d\'eplacez-les, mais lancez alors une sauvegarde Full.

\subsubsection*{Exclusion de fichiers et r\'epertoires}
\index[general]{Directories!Excluding Files and }
\index[general]{Excluding Files and Directories }
\addcontentsline{toc}{subsubsection}{Exclusion de fichiers et r\'epertoires}

Vous pouvez aussi inclure des noms de fichiers ou chemins absolus, en plus 
de l'utilisation de caract\`eres jokers et de la directive {\bf Exclude=yes} dans 
les ressources Options comme expos\'e ci-dessus, en ajoutant simplement 
les fichiers \`a exclure dans une ressource Exclude du FileSet. Par exemple :

\footnotesize
\begin{verbatim}
FileSet {
  Name = Exclusion_example
  Include {
    Options {
      Signature = SHA1
    }
    File = /
    File = /boot
    File = /home
    File = /rescue
    File = /usr
  }
  Exclude {
    File = /proc
    File = /tmp
    File = .journal
    File = .autofsck
  }
}
\end{verbatim}
\normalsize

\subsection*{Un exemple de FileSet Windows}
\index[general]{FileSet!Windows Example }
\index[general]{Un exemple de FileSet Windows}
\addcontentsline{toc}{subsection}{Un exemple de FileSet Windows}

Cet exemple est une contribution de Phil Stracchino :

\footnotesize
\begin{verbatim}
This is my Windows 2000 fileset:
FileSet {
  Name = "Windows 2000 Full Set"
  Include {
    Options {
       signature=MD5
    }
    File = c:/
  }
  Exclude {
# Most of these files are excluded not because we don't want
#  them, but because Win2K won't allow them to be backed up
#  except via proprietary Win32 API calls.
    File = "/Documents and Settings/*/Application Data/*/Profiles/
           */*/Cache/*"
    File = "/Documents and Settings/*/Local Settings/Application Data/
           Microsoft/Windows/[Uu][Ss][Rr][Cc][Ll][Aa][Ss][Ss].*"
    File = "/Documents and Settings/*/[Nn][Tt][Uu][Ss][Ee][Rr].*"
    File = "/Documents and Settings/*/Cookies/*"
    File = "/Documents and Settings/*/Local Settings/History/*"
    File = "/Documents and Settings/*/Local Settings/
           Temporary Internet Files/*"
    File = "/Documents and Settings/*/Local Settings/Temp/*"
    File = "/WINNT/CSC"
    File = "/WINNT/security/logs/scepol.log"
    File = "/WINNT/system32/config/*"
    File = "/WINNT/msdownld.tmp/*"
    File = "/WINNT/Internet Logs/*"
    File = "/WINNT/$Nt*Uninstall*"
    File = "/WINNT/Temp/*"
    File = "/temp/*"
    File = "/tmp/*"
    File = "/pagefile.sys"
  }
}
\end{verbatim}
\normalsize

Remarque : les trois lignes coup\'ees de cette liste d'exclusion ne l'ont \'et\'e 
que pour des motifs de mise en page, elles doivent en r\'ealit\'e \^etre \'ecrites 
sur une seule ligne.

\subsection*{L'ancienne ressource FileSet}
\index[general]{Resource!Old FileSet }
\index[general]{L'ancienne ressource FileSet}
\addcontentsline{toc}{subsection}{L'ancienne ressource FileSet}

L'ancienne Ressource FileSet des versions ant\'erieures \`a 1.34.3 est obsol\`ete, 
mais fonctionne encore. Nous vous encourageons \`a utiliser la nouvelle forme, 
car le code correspondant sera supprim\'e \`a partir de la version 1.37.

\subsection*{Tester vos FileSets}
\index[general]{FileSet!Testing Your }
\index[general]{Tester vos FileSets }
\addcontentsline{toc}{subsection}{Tester vos FileSets}

Si vous voulez vous faire une id\'ee pr\'ecise de ce qui sera effectivement 
sauvegard\'e par un FileSet, ou si vous voulez vous assurer de l'efficacit\'e  
d'une liste d'exclusion, vous pouvez utiliser la commande {\bf estimate} 
du programme Console. Voyez la commande \ilink{estimate}{estimate} dans le 
chapitre Console de ce manuel.

\subsection*{Considerations sur le nommage Windows NTFS}
\index[general]{Considerations sur le nommage Windows NTFS}
\index[general]{Considerations!Windows NTFS Naming }
\addcontentsline{toc}{subsection}{Considerations sur le nommage Windows NTFS}

Les noms de fichiers NTFS contenant des caract\`eres Unicode (i.e. \gt{} 0xFF) ne 
peuvent, pour le moment, \^etre nomm\'e eplicitement. Vous devez inclure de tels 
fichiers en d\'esignant un r\'epertoire de niveau sup\'erieur ou une lettre de disque 
ne contenant pas de caract\`ere Unicode.

\subsection*{La ressource Client}
\label{ClientResource2}
\index[general]{Resource!Client }
\index[general]{La ressource Client}
\addcontentsline{toc}{subsection}{La ressource Client} 

La ressource Client d\'efinit les attributs des clients sauvegard\'es 
par ce Director. Il faut une ressource Client par machine sauvegard\'ee.

\begin{description}

\item [Client (ou FileDaemon)]
   \index[dir]{Client (ou FileDaemon)}
   \index[dir]{Directive!Client (or FileDaemon)}
   D\'ebut des directives Client.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
Le nom du client qui sera utilis\'e dans la directive Job de la ressource ou 
dans une commande run de la Console. Cette directive est requise.

\item [Address = \lt{}address\gt{}]
   \index[dir]{Address}
   \index[dir]{Directive!Address}
   \index[dir]{File Daemon Address}
   \index[dir]{Client Address}
L'adresse d'un File Daemon Bacula est un nom d'h\^ote, un nom pleinement qualifi\'e 
ou une adresse r\'eseau au format quatre octets point\'es. Cette directive est requise.

\item [FD Port = \lt{}port-number\gt{}]
   \index[dir]{FD Port}
   \index[dir]{Directive!FD Port}
O\`u le port est le num\'ero de port auquel le le File Daemon peut \^etre contact\'e. 
La valeur par d\'efaut est 9102.


\item [Catalog = \lt{}Catalog-resource-name\gt{}]
   \index[dir]{Catalog}
   \index[dir]{Directive!Catalog}
Cette directive sp\'ecifie le nom de la ressource catalog \`a utiliser pour ce 
client. Cette directive est requise.

\item [Password = \lt{}password\gt{}]
   \index[dir]{Password}
   \index[dir]{Directive!Password}
Il s'agit ici du mot de passe \`a utiliser lors de la connection avec le 
File Daemon, aussi le fichier de configuration de la machine \`a sauvegarder 
doit d\'efinir le m\^eme mot de passe pour \^etre connect\'e par ce Director. 
Cette directive est requise. Si vous disposez de {\bf /dev/random} ou de {\bf bc} 
sur votre machine, Bacula g\'en\`ere des mots de passe al\'eatoires lors du processus 
de configuration. Dans le cas contraire, le mot de passe est laiss\'e blanc.

\label{FileRetention}

\item [File Retention = \lt{}time-period-specification\gt{}  ]
   \index[dir]{File Retention  }
   \index[dir]{Directive!Password}
La directive File Retention d\'efinit la p\'eriode pendant laquelle Bacula conservera 
les enregistrements File dans le catalogue. Lors de l'expiration de cette p\'eriode, 
si la directive {\bf AutoPrune} est active ({\bf yes}), Bacula \'elague le catalogue 
des enregistrements File dont l'āge est sup\'erieur \`a la p\'eriode de r\'etention. 
Notez que ceci n'affecte que les enregistrements du catalogue, et non vos 
sauvegardes archiv\'ees.

Les enregistrements File peuvent en fait \^etre conserv\'es pour une p\'eriode inf\'erieure 
\`a celle affect\'ee \`a cette directive dans les cas o\`u vous avez sp\'ecifi\'e des p\'eriodes 
plus courtes pour les directives  {\bf Job Retention} ou {\bf Volume Retention}. 
La plus courte des trois prend le pas sur les autres. Les dur\'ees peuvent \^etre exprim\'ees 
en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees. Consultez 
le chapitre \ilink{Adapter les fichiers de configuration}{Time} de ce manuel pour plus de d\'etails sur les 
sp\'ecifications de dur\'ees.

La valeur par d\'efaut est de 60 jours.
\label{JobRetention}

\item [Job Retention = \lt{}time-period-specification\gt{}  ]
   \index[dir]{Job Retention}
   \index[dir]{Directive!Job Retention}
La directive Job Retention d\'efinit la p\'eriode pendant laquelle Bacula conservera
les enregistrements Job dans le catalogue. Lors de l'expiration de cette p\'eriode,
si la directive {\bf AutoPrune} est active ({\bf yes}), Bacula \'elague le catalogue
des enregistrements File dont l'āge est sup\'erieur \`a la p\'eriode de r\'etention.
Notez que ceci n'affecte que les enregistrements du catalogue, et non vos
sauvegardes archiv\'ees.
   
Si un enregistrement de Job est s\'electionn\'e pour \'elagage, tous les enregistrements File 
et JobMedia associ\'es seront aussi \'elagu\'es du catalogue, sans qu'il ne soit tenu compte 
de la p\'eriode File Retention d\'efinie. Par cons\'equent, vous utiliserez, en principe, 
une p\'eriode File Retention inf\'erieure \`a la p\'eriode Job retention. La p\'eriode 
Job retention peut en fait s'av\'erer inf\'erieure \`a la valeur que vous avez sp\'ecifi\'ee 
si vous avez affect\'e une valeur inf\'erieure \`a la directive {\bf Volume Retention} dans 
la ressource Pool. Les p\'eriodes Job retention et  Volume retention sont appliqu\'ees 
ind\'ependamment, la plus petite prend le pas sur l'autre.

Les dur\'ees peuvent \^etre exprim\'ees
en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees. Consultez
le chapitre \ilink{Adapter les fichiers de configuration}{Time} de ce manuel pour plus de d\'etails sur les
sp\'ecifications de dur\'ees.

La valeur par d\'efaut est 180 jours.  
\label{AutoPrune}

\item [AutoPrune = \lt{}yes|no\gt{}]
   \index[dir]{AutoPrune}
   \index[dir]{Directive!AutoPrune}
Si AutoPrune est r\'egl\'e \`a {\bf yes} (valeur par d\'efaut), Bacula (dans les versions au del\`a 
de 1.20) applique automatiquement les p\'eriodes File retention et Job  retention pour le 
client \`a la fin du job. Si vous sp\'ecifiez {\bf AutoPrune = no}, l'\'elagage ne se fera pas 
et votre catalogue grossira \`a chaque job. L'\'elagage n'affecte que les donn\'ees du catalogue, 
et non les donn\'ees stock\'ees sur les volumes.

\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
   \index[dir]{Maximum Concurrent Jobs}
   \index[dir]{Directive!Maximum Concurrent Jobs}
\lt{}number\gt{} d\'esigne le nombre maximum de jobs qui peuvent \^etre lanc\'es simultan\'ement 
sur le client concern\'e. Notez que cette directive ne limite que les jobs pour les clients 
qui ont le m\^eme nom que la ressource dans laquelle elle appara\^it. Toutes les autres restrictions 
du nombre maximum de jobs simultan\'es telles que celles sp\'ecifi\'ees dans les ressources 
Director, Job, ou Storage s'appliquent aussi en plus de toute limite fix\'ee ici. La valeur 
par d\'efaut est 1, mais vous pouvez sp\'ecifier une valeur plus grande. Nous recommandons 
fortement de lire les MISES EN GARDE de la section \ilink{ Maximum Concurrent 
Jobs}{DirMaxConJobs} du chapitre Configurer le Director.


\item [Priority = \lt{}number\gt{}]
   \index[dir]{Priority}
   \index[dir]{Directive!Priority}
\lt{}number\gt{} sp\'ecifie la priorit\'e de ce client par rapport aux autres clients 
que le Director sauvegarde simultan\'ement. La priorit\'e admet une valeur entre 1 et 1000.
Les clients sont ordonn\'es de sorte que ceux dont la valeur de priorit\'e sont les plus petites 
sont trait\'es les premiers (Ceci n'est pas encore impl\'ement\'e).
\end{description}

Voici un exemple d'une d\'efinition de ressource Client valide :

\footnotesize
\begin{verbatim}
Client {
  Name = Minimatou
  FDAddress = minimatou
  Catalog = MySQL
  Password = very_good
}
\end{verbatim}
\normalsize

\subsection*{La ressource Storage}
\label{StorageResource2}
\index[general]{Resource!Storage }
\index[general]{Storage Resource }
\addcontentsline{toc}{subsection}{Storage Resource}

La ressource Storage d\'efinit les Storage Daemons disponibles pour le Director.

\begin{description}

\item [Storage]
   \index[dir]{Storage}
   \index[dir]{Directive!Storage}
D\'ebut des ressources Storage. Il faut en sp\'ecifier au moins une.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
Le nom de la ressource Storage. Ce nom appara\^it au niveau de la directive 
Storage sp\'ecifi\'ee dans la ressource Job et est requise.

\item [Address = \lt{}address\gt{}]
   \index[dir]{Address}
   \index[dir]{Directive!SD Address}
   \index[dir]{Storage daemon Address}
O\`u l'adresse est un nom d'h\^ote, une {\bf adresse pleinement qualifi\'ee}, ou une 
{\bf adresse IP}. Notez bien que l'adresse sp\'ecifi\'ee ici sera transmise au 
File Daemon qui l'utilisera alors pour contacter le Storage Daemon. Aussi, ce 
n'est {\bf pas} une bonne id\'ee d'utiliser {\bf localhost} en tant que nom, 
il vaut mieux utiliser un nom de machine pleinement qualifi\'e, ou une adresse IP.
Cette directive est requise.

\item [SD Port = \lt{}port\gt{}]
   \index[dir]{SD Port}
   \index[dir]{Directive!SD Port}
O\`u "port" est le port \`a utiliser pour contacter le Storage Daemon pour les 
informations et pour ex\'ecuter les jobs. Ce m\^eme num\'ero de port doit 
appara\^itre dans la ressource Storage du fichier de configuration du 
Storage Daemon. Le port par d\'efaut est 9103.

\item [Password = \lt{}password\gt{}]
   \index[dir]{Password}
   \index[dir]{Directive!Password}
Il s'agit du mot de passe \`a utiliser lors de l'\'etablissement de la connection 
avec les services Storage. Ce m\^eme mot de passe doit aussi appara\^itre dans la 
ressource Director du fichier de configuration du Storage Daemon. Cette 
directive est requise. Si vous avez soit {\bf /dev/random}, soit {\bf bc} 
sur votre machine, Bacula g\'en\`erera un mot de passe al\'eatoire lors du processus 
de configuration. Dans le cas contraire, ce champ sera laiss\'e blanc.

\item [Device = \lt{}device-name\gt{}]
   \index[dir]{Device}
   \index[dir]{Directive!Device}
Cette directive sp\'ecifie le nom (pour le Storage Daemon) du p\'eriph\'erique \`a 
utiliser pour le stockage. 
Ce nom n'est pas le nom de p\'eriph\'erique physique, mais le nom de p\'eriph\'erique 
logique qui a \'et\'e d\'efini par la directive {\bf Name} de la ressource {\bf Device} 
du fichier de configuration du Storage Daemon. Si le p\'eriph\'erique est une librairie, vous 
devez utiliser le nom d\'efini au niveau de la directive {\bf Name} d\'efini dans la d\'efinition 
de la ressource  {\bf Autochanger} du Storage Daemon. Vous pouvez utiliser le nom de 
votre choix (y compris le nom de p\'eriph\'erique physique) \`a concurrence de 
127 caract\`eres. Le nom de p\'eriph\'erique physique associ\'e \`a ce p\'eriph\'erique est 
sp\'ecifi\'e dans le fichier de configuration du Storage Daemon 
(en tant qu'{\bf Archive  Device}). Prenez garde \`a ne pas d\'efinir deux directives 
Storage Resource dans le Director qui pointent vers le m\^eme p\'eriph\'erique du 
Storage Daemon. Il pourrait en r\'esulter un blocage du Storage Daemon si celui-ci 
tente d'utiliser le m\^eme p\'eriph\'erique deux fois. Cette directive est requise.

\item [Media Type = \lt{}MediaType\gt{}]
   \index[dir]{Media Type}
   \index[dir]{Directive!Media Type}
Cette directive sp\'ecifie le type de m\'edia \`a utiliser pour stocker les donn\'ees. 
Il s'agit d'une cha\^ine de caract\`eres arbitraire n'exc\'edant pas 127 caract\`eres. 
Ce peut \^etre ce que vous voulez, cependant, il est pr\'ef\'erable de la choisir de 
mani\`ere \`a d\'ecrire le m\'edium de stockage utilis\'e (par exemple : Fichier, DAT, 
''HP  DLT8000``, 8mm,...). D'autre part, il est esentiel d'avoir une sp\'ecification 
{\bf Media Type} unique pour chaque type de m\'edia de stockage. Si vous avez deux 
lecteurs DDS-4 avec des formats incompatibles et une librairie DDS-4, vous devriez 
certainement sp\'ecifier des {\bf Media Types} distincts. Lors d'une restauration, 
supposons qu'un Media Type {\bf DDS-4} est associ\'e avec le le job, Bacula peut 
d\'ecider d'utiliser tout Storage Daemon qui supporte le Media Type {\bf DDS-4} sur 
tout lecteur qui le supporte. 

Actuellement, Bacula n'autorise qu'un seul type de media. Par cons\'equent, si vous 
disposez d'un lecteur qui en supporte plusieurs, vous pouvez utiliser une cha\^ine 
unique pour d\'esigner les volumes de l'un ou l'autre type, par exemple Media Type = DDS-3-4 
pour les types DDS-3 et DDS-4, mais ces volumes ne seront mont\'es que sur les lecteurs 
sp\'ecifi\'es comme acceptant les deux types : DDS-3-4

Si vous voulez contraindre Bacula \`a utiliser un 
seul Storage Daemon ou un seul lecteur, vous devez sp\'ecifier un Media Type unique 
pour ce lecteur. C'est un point important qui devrait \^etre bien compris. Notez que 
ceci s'applique \'egalement aux volumes disque. Si vous d\'efinissez plus d'une ressource 
Device disque dans votre fichier de configuration du Storage Daemon, les volumes sur ces 
deux devices seront en fait incompatibles car l'un ne pourra \^etre mont\'e sur l'autre 
puisqu'ils se trouvent dans des r\'epertoires diff\'erents. C'est pourquoi vous devriez 
probablement plut\^ot utiliser deux Media Types distincts pour vos deux devices disque 
(m\^eme si vous pensez \`a eux comme ayant l'un et l'autre le type File).

Vous trouverez pus de d\'etails \`a ce sujet dans le chapitre 
\ilink{Gestion des volumes : fondements (NDT:basic volumes management)}
{_ChapterStart39} de ce manuel.

Le {\bf MediaType} sp\'ecifi\'e ici {\bf doit} correspondre au {\bf MediaType} 
sp\'ecifi\'e dans la ressource {\bf Device} du fichier de configuration du 
Storage Daemon. Cette directive est requise, et est utilis\'ee par le Director 
et le Storage Daemon pour s'assurer qu'un volume s\'electionn\'e automatiquement 
dans un Pool correspond \`a un p\'eriph\'erique physique. Si un Storage Daemon 
g\`ere plusieurs p\'eriph\'eriques (par exemple, s'il \'ecrit sur plusieurs volumes 
de type File sur diff\'erentes partitions), cette directive vous permet de 
pr\'eciser exactement quel p\'eriph\'erique utiliser.

Comme mentionn\'e ci-dessus, la valeur sp\'ecifi\'ee dans la ressource Storage du 
Director doit s'accorder avec celle sp\'ecifi\'ee dans la ressource Device du 
fichier de configuration du Storage Daemon. Ceci repr\'esente aussi un contr\^ole 
suppl\'ementaire pour assurer que vous n'essayez pas d'\'ecrire les donn\'ees destin\'ees 
\`a un lecteur DLT sur un lecteur 8mm.

\label{Autochanger1}

\item [Autochanger = \lt{}yes|no\gt{}  ]
   \index[dir]{Autochanger  }
   \index[dir]{Directive!Autochanger}
Si vous sp\'ecifiez {\bf yes} pour cette commande (la valeur par d\'efaut est {\bf no}), 
alors Bacula requ\'erira un num\'ero de Slot lorsque vous utiliserez les commandes 
{\bf label} et {\bf add} pour cr\'eer un nouveau volume. Ceci simplifie la cr\'eation 
des enregistrements de Volumes dans le catalogue si vous disposez d'une librairie. 
Si vous omettez de sp\'ecifier le Slot, la robotique ne sera pas utilis\'ee. Cependant, 
vous pouvez modifier le Slot associ\'e \`a un volume \`a tout moment grāce \`a la commande 
{\bf update volume} du programme Console. Lorqu'{\bf autochanger} est activ\'ee, 
l'algorithme utilis\'e par Bacula pour rechercher des volumes utilisables est 
modifi\'e de fa\c {c}on \`a prendre en compte tout volume suppos\'e contenu dans la librairie. 
Si aucun volume {\bf in changer} n'est trouv\'e, Bacula tente de recycler, \'elaguer..., 
et s'il ne trouve toujours aucun volume, Bacula recherche un volume pr\'esent ou non 
dans la librairie. Privil\'egier les volumes pr\'esents dans la librairie permet de 
minimiser les interventions d'un op\'erateur. 

Pour que la robotique soit utilis\'ee, vous devez aussi sp\'ecifier {\bf Autochanger = yes} 
dans la ressource \ilink{La Ressource Device}{Autochanger} du fichier de configuration du 
Storage Daemon, ainsi que d'autres param\`etres importants du Storage Daemon. Vous 
trouverez plus d'information \`a ce sujet dans le chapitre 
\ilink{ Utiliser une librairie}{_ChapterStart18} de ce manuel.

\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
   \index[dir]{Maximum Concurrent Jobs}
   \index[dir]{Directive!Maximum Concurrent Jobs}
O\`u \lt{}number\gt{} est le nombre maximum de jobs utilisant la 
ressource Storage courante qui peuvent \^etre ex\'ecut\'es simultan\'ement. Notez que cette 
directive ne limite que les jobs qui utilisent ce Storage Daemon. Toute autre 
limitation du nombre maximum de jobs simultan\'es au niveau des ressources 
Director, Job ou Client est aussi appliqu\'ee en plus de celle fix\'ee ici. La valeur 
par d\'efaut est 1, mais vous pouvez utiliser une valeur plus importante. Nous vous 
recommandons fortement de lire les MISES EN GARDE de la section \ilink{ Maximum Concurrent
Jobs}{DirMaxConJobs} du chapitre Configurer le Director.

Alors qu'il est possible de d\'efinir des nombres maximum de jobs simultan\'es sup\'erieurs 
\`a 1 dans les ressource Director, Job et Client, vous devriez porter une attention 
particuli\`ere au param\'etrage de cette directive pour le Storage Daemon. En conservant 
la valeur 1, vous \'evitez que deux jobs \'ecrivent simultan\'ement sur le m\^eme volume ce qui, 
quoique support\'e, n'est pas recommand\'e actuellement.
\end{description}

Voici un exemple de ressource Storage valide :

\footnotesize
\begin{verbatim}
# Definition of tape storage device
Storage {
  Name = DLTDrive
  Address = lpmatou
  Password = storage_password # password for Storage daemon
  Device = "HP DLT 80"    # same as Device in Storage daemon
  Media Type = DLT8000    # same as MediaType in Storage daemon
}
\end{verbatim}
\normalsize

\subsection*{La ressource Pool}
\label{PoolResource}
\index[general]{Resource!Pool }
\index[general]{Pool Resource }
\addcontentsline{toc}{subsection}{Pool Resource}
La ressource Pool d\'efinit l'ensemble des volumes de stockage (cartouches ou fichiers) 
\`a la disposition de Bacula pour \'ecrire les donn\'ees. En configurant diff\'erents 
Pools, vous pouvez d\'eterminer quel ensemble de volumes (ou m\'edia) re\c {c}oit les 
donn\'ees sauvegard\'ees. Ceci permet, par exemple, de stocker toutes les sauvegardes 
Full sur un ensemble de volumes, et les sauvegardes diff\'erentielles et 
incr\'ementales sur un autre. De m\^eme, vous pouvez assigner un ensemble de volumes 
\`a chaque machine sauvegard\'ee. Tout ceci peut \^etre r\'ealis\'e ais\'ement en d\'efinissant 
plusieurs pools.

Un autre aspect important d'un pool est qu'il contient des attributs par d\'efaut 
(Nombre maximum de jobs, p\'eriode de r\'etention, drapeau de recyclage,...) qui sont 
conf\'er\'es \`a tout volume lui appartenant lors de sa cr\'eation. Ceci vous \'evite d'avoir 
\`a r\'epondre \`a un grand nombre de questions lorsque vous \'etiquettez (label) un nouveau 
volume. Chacun de ces attributs peut ensuite \^etre modifi\'e sur chaque volume 
individuellement avec la commande {\bf update} du programme Console. Notez que 
vous devez pr\'eciser explicitement quel pool est \`a utiliser avec chaque job. Bacula 
ne recherche pas automatiquement le pool correct.

Dans la plupart des installations de Bacula, toutes les sauvegardes de toutes 
les machines vont vers un unique jeu de volumes. Dans ce cas, vous n'utiliserez 
probablement que le pool par d\'efaut {\bf Default}. Si votre strat\'egie de 
sauvegarde vous impose \`a monter chaque jour une cartouche diff\'erente, vous voudrez 
probablement d\'efinir des pools distincts pour chaque jour. Pour plus d'informations 
\`a ce sujet, consultez le chapitre \ilink{Strat\'egies de sauvegarde}{_ChapterStart3} 
de ce manuel.

Pour utiliser un pool, vous devez suivre trois \'etapes :

D'abord, le pool doit 
\^etre d\'efini dans le fichier de configuration du Director. Ensuite le pool doit 
\^etre enregistr\'e dans le catalogue. Ceci est fait automatiquement par le Director 
\`a chaque fois qu'il d\'emarre, ou peut \^etre r\'ealis\'e manuellement \`a l'aide de la 
commande {\bf create} du programme Console. Enfin, si vous modifiez la d\'efinition 
du pool dans le fichier de configuration du Director et red\'emarrez Bacula, 
le pool sera mis \`a jour automatiquement, ce qui peut aussi \^etre r\'ealis\'e 
manuellement avec la commande {\bf update pool} du programme Console pour 
rafraichir l'image du catalogue. C'est cette image du catalogue plut\^ot 
que l'image de la ressource du Director qui est utilis\'ee pour les attributs 
de volume par d\'efaut. Notez que pour que le pool soit automatiquement 
cr\'e\'e ou mis \`a jour, il doit \^etre r\'ef\'erenc\'e explicitement par une ressource Job.

Ensuite le m\'edium physique doit \^etre \'etiquett\'e. L'\'etiquettage peut \^etre r\'ealis\'e 
soit par la commande {\bf label} du programme Console, soit en utilisant le 
programme {\bf btape}. La m\'ethode \`a privil\'egier est la premi\`ere.

Finallement, vous devez ajouter des noms de volumes (et leurs attributs) au 
pool. Pour que les volumes soient utilis\'es par Bacula, ils doivent \^etre 
du m\^eme {\bf Media Type} que l'Archive Device sp\'ecifi\'ee pour le job. 
(Autrement dit, si vous vous appr\'etez \`a sauvegarder vers un lecteur DLT, 
le pool doit contenir des volumes DLT, puisque des volumes 8mm ne peuvent 
\^etre mont\'es sur un lecteur DLT). Le {\bf Media Type} rev\^et une importance 
particuli\`ere si vous sauvegardez vers des fichiers. Lorsque vous ex\'ecutez 
un job, vous devez explicitement pr\'eciser le pool. Bacula s\'electionne d\`es lors 
automatiquement le prochain volume du pool \`a utiliser, en s'assurant que le 
{\bf Media Type} de tout volume s\'electionn\'e est bien celui requis par la 
ressource Storage sp\'ecifi\'ee pour le job.

Si vous utilisez la commande {\bf label} du programme Console pour 
\'etiquetter les volumes, il sont automatiquement ajout\'es au pool, aussi cette 
derni\`ere \'etape n'est g\'en\'eralement pas requise.

Il est aussi possible d'ajouter des volumes au catalogue sans avoir 
explicitement \'etiquett\'e les volumes physiques. Ceci s'effectue avec la commande 
{\bf add} du programme Console.

Comme mentionn\'e plus haut, \`a chaque d\'emarrage, Bacula examine tous les pools 
associ\'es \`a chaque catalogue, et si un enregistrement n'existe pas encore, il 
est cr\'e\'e \`a partir de la d\'efinition du pool dans la ressource. Bacula devrait 
probablement effectuer un {\bf update pool} si vous modifiez la d\'efinition 
du pool mais, actuellement, vous devez le faire manuellement avec la 
commande {\bf update pool} du programme Console.

La ressource Pool d\'efinie dans le fichier de configuration du Director peut 
contenir les directives suivantes :


\begin{description}

\item [Pool]
   \index[dir]{Pool}
   \index[dir]{Directive!Pool}
D\'ebut de la ressource Pool. Il faut d\'efinir au moins une ressource Pool.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
Le nom du pool. Pour la plupart des applications, vous utiliserez le pool 
par d\'efaut nomm\'e {\bf Default}. Cette directive est requise.

\item [Number of Volumes = \lt{}number\gt{}]
   \index[dir]{Number of Volumes  }
Cette directive sp\'ecifie le nombre de volumes (cartouches ou fichiers) contenus 
dans le pool. En principe, il est d\'efini et mis \`a jour automatiquement par la 
routine de maintenance du catalogue de Bacula.
\label{MaxVolumes}

\item [Maximum Volumes = \lt{}number\gt{}]
   \index[dir]{Maximum Volumes}
    \index[dir]{Directive!Maximum Volumes}
Cette directive sp\'ecifie le nombre maximum de volumes contenus dans le pool.
Cette directive est optionnelle. Si elle est omise ou r\'egl\'ee \`a 0, tout nombre 
de volumes est permis. En g\'en\'eral, cette directive est utile pour les librairies, 
o\`u il y a un nombre fix\'e de volumes, ou pour le stockage sur fichier si vous voulez 
vous assurer que les sauvegardes sur disque ne deviennent pas trop nombreuses ou ne 
consomment pas trop d'espace.

\item [Pool Type = \lt{}type\gt{}]
   \index[dir]{Pool Type  }
   \index[dir]{Directive!Pool Type}
Cette directive d\'efinit le type du pool, qui correspond au type du job 
ex\'ecut\'e. Cette directive est requise et peut prendre l'une des valeurs suivantes :

\begin{itemize}
\item [Backup]  
\item [*Archive]  
\item [*Cloned]  
\item [*Migration]  
\item [*Copy]  
\item [*Save]  
   \end{itemize}

\item [Use Volume Once = \lt{}yes|no\gt{}]
   \index[dir]{Use Volume Once}
   \index[dir]{Directive!Use Volume Once}
Cette directive, si elle est active (valeur {\bf yes}) stipule que chaque volume 
ne doit \^etre utilis\'e qu'une seule fois. C'est particuli\`erement utile si le 
volume est un fichier et si vous voulez un nouveau fichier pour chaque nouvelle 
sauvegarde. La valeur par d\'efaut est {\bf no} (autrement dit, les volumes peuvent 
\^etre utilis\'es plusieurs fois). Cette directive sera tr\`es certainement bient\^ot 
obsol\`ete, aussi nous vous recommandons d'utiliser {\bf Maximum Volume Jobs = 1} 
\`a la place.
   
La valeur d\'efinie par cette directive dans le fichier de 
configuration du Director est la valeur par d\'efaut utilis\'ee lorsqu'un nouveau 
volume est cr\'e\'e. Modifier la valeur dans le fichier de configuration ne changera 
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume 
existant, vous devez utiliser la commande {\bf update} du programme Console.

\item [Maximum Volume Jobs = \lt{}positive-integer\gt{}]
   \index[dir]{Maximum Volume Jobs}
   \index[dir]{Directive!Maximum Volume Jobs}
Cette directive sp\'ecifie le nombre maximum de jobs qui peuvent \^etre \'ecrits sur le volume. 
La valeur par d\'efaut est z\'ero, ce qui signifie que le nombre de jobs sur un volume 
n'est pas limit\'e. Sinon, lorsque le nombre de jobs sauvegard\'es sur le volume atteint 
la valeur {\bf positive-integer} sp\'ecifi\'ee, le volume est marqu\'e {\bf Used}. D\`es lors, 
il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme dans le cas d'un volume 
avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le recyclage est activ\'e. En 
sp\'ecifiant {\bf MaximumVolumeJobs = 1} vous obtenez le m\^eme effet que celui que vous 
obtiendriez avec {\bf UseVolumeOnce = yes}.

Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du 
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois 
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande {\bf update} du programme Console.

\item [Maximum Volume Files = \lt{}positive-integer\gt{}]
   \index[dir]{Maximum Volume Files}
   \index[dir]{Directive!Maximum Volume Files}
Cette directive sp\'ecifie le nombre maximum de fichiers qui peuvent \^etre \'ecrits sur 
le volume. La valeur par d\'efaut est z\'ero, ce qui signifie que le nombre de fichiers 
sur un volume n'est pas limit\'e. Sinon, lorsque le nombre de fichiers sauvegard\'es sur 
le volume atteint la valeur {\bf positive-integer} sp\'ecifi\'ee, le volume est marqu\'e 
{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme 
dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le 
recyclage est activ\'e. Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee, 
et que le statut du volume est \'eventuellement chang\'e en {\bf Used}.

La valeur d\'efinie par cette directive dans le fichier de configuration du
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande {\bf update} du programme Console.

\item [Maximum Volume Bytes = \lt{}size\gt{}]
   \index[dir]{Maximum Volume Bytes}
   \index[dir]{Directive!Maximum Volume Bytes}
Cette directive sp\'ecifie le nombre maximum d'octets qui peuvent \^etre \'ecrits sur le 
volume. La valeur par d\'efaut est z\'ero, ce qui signifie qu'il n'y a d'autre limite 
que la capacit\'e physique du volume. Sinon, lorsque le nombre d'octets sauvegard\'es sur 
le volume atteint la valeur {\bf size} sp\'ecifi\'ee, le volume est marqu\'e 
{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme 
dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le 
recyclage est activ\'e. Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee,
et que le statut du volume est \'eventuellement chang\'e en {\bf Used}.

La valeur d\'efinie par cette directive dans le fichier de configuration du
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande {\bf update} du programme Console.

\item [Volume Use Duration = \lt{}time-period-specification\gt{}]
   \index[dir]{Volume Use Duration}
   \index[dir]{Directive!Volume Use Duration}
Cette directive d\'efinit la p\'eriode durant laquelle le volume peut \^etre utilis\'e en 
\'ecriture, \`a compter de la premi\`ere op\'eration d'\'ecriture de donn\'ees. 
La valeur par d\'efaut est z\'ero, ce qui signifie que le volume peut \^etre \'ecrit 
ind\'efiniment . Sinon, lorsque la dur\'ee depuis la premi\`ere \'ecriture exc\`ede la p\'eriode 
{\bf time-period-specification} sp\'ecifi\'ee, le volume est marqu\'e
{\bf Used}. D\`es lors, il ne peut plus \^etre utilis\'e pour y ajouter des jobs, tout comme
dans le cas d'un volume avec le statut {\bf Full}, mais il peut \^etre recycl\'e si le
recyclage est activ\'e. L'usage de la commande {\bf status dir} applique des algorithmes 
similaires \`a l'\'execution de jobs, aussi lors d'une telle commande, le statut du volume 
peut \^etre modifi\'e. Lorsque le volume est recycl\'e, il peut \`a nouveau \^etre utilis\'e.

Vous pourriez utiliser cette directive, par exemple, si vous avez un volume d\'edi\'e 
aux sauvegardes incr\'ementales, et un volume d\'edi\'e aux Fulls hebdomadaires. Une fois que 
la Full est pass\'ee, vous pouvez pr\'ef\'erer utiliser un autre volume pour les incr\'ementales. 
Ceci peut \^etre accompli en r\`eglant la p\'eriode {\bf Volume Use Duration} \`a six jours pour 
les volumes des incr\'ementales. Autrement dit, celui-ci sera utilis\'e durant les six jours 
qui suivent une full, puis un autre volume d'incr\'ementales sera utilis\'e. Veillez \`a utiliser 
des p\'eriodes relativement courtes telles que 23 heures, ou vous pourriez placer Bacula en situation 
de devoir attendre tout un week-end le montage d'une cartouche par l'op\'erateur pour pouvoir terminer 
une sauvegarde.

Ce n'est qu'\`a la fin d'un job que Cette valeur est control\'ee,
et que le statut du volume est \'eventuellement chang\'e en {\bf Used}, ce qui signifie que 
bien que la p\'eriode {\bf Volume Use Duration} puisse avoir expir\'e, l'entr\'ee correspondante 
du catalogue ne sera pas mise \`a jour jusqu'\`a ce que le prochain job utilisant ce 
volume soit ex\'ecut\'e.

La valeur d\'efinie par cette directive dans le fichier de configuration du
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande \ilink{\bf update volume}{UpdateCommand} du 
programme Console.

\item [Catalog Files = \lt{}yes|no\gt{}]
   \index[dir]{Catalog Files}
   \index[dir]{Directive!Catalog Files}
Cette directive pr\'ecise si les noms des fichiers sauvegard\'es doivent ou non \^etre 
enregistr\'es dans le catalogue. La valeur par d\'efaut est {\bf yes}. L'avantage de 
d\'esactiver cette option ({\bf Catalog Files = No}) est d'avoir un catalogue 
significativement plus petit. L'inconv\'enient est de ne pas pouvoir produire de 
liste des fichiers sauvegard\'es pour chaque job \`a partir du catalogue (autrement 
dit, vous ne pourrez naviguer dans les fichiers sauvegard\'es). Ainsi, sans les 
enregistrements de fichiers, vous ne pourrez utiliser la commande {\bf restore}, 
ni aucune des autres commandes du programme Console qui se r\'ef\`erent aux 
enregistrements de fichiers.

\label{PoolAutoPrune}

\item [AutoPrune = \lt{}yes|no\gt{}]
   \index[dir]{AutoPrune}
   \index[dir]{Directive!AutoPrune}
Si AutoPrune est activ\'ee ({\bf yes}), ce qui est le cas par d\'efaut, Bacula 
(depuis la version 1.20) applique automatiquement la p\'eriode de r\'etention des 
volumes lorsqu'un nouveau volumes est requis ou lorsqu'il n'existe aucun volume 
utilisable dans le pool. L'\'elagage des volumes consiste \`a supprimer du catalogue 
les jobs expir\'es (ceux qui sont plus anciens que la p\'eriode de r\'etention), et rend 
possible le recyclage de ces volumes

\label{VolRetention}

\item [Volume Retention = \lt{}time-period-specification\gt{}]
   \index[dir]{Volume Retention}
   \index[dir]{Directive!Volume Retention}
La directive Volume Retention d\'efinit la p\'eriode durant laquelle {\bf Bacula} 
conserve les enregistrements Job associ\'es au volume dans le catalogue. 
Lors de l'expiration de cette p\'eriode, si {\bf AutoPrune} est activ\'ee, Bacula 
peut supprimer les enregistrements Job plus anciens que la p\'eriode {\bf time-period-specification} 
sp\'ecifi\'ee s'il est n\'ecessaire de lib\'erer un volume. Tous les enregistrements de fichiers 
associ\'es \`a des jobs supprim\'es sont aussi supprim\'es. Les dur\'ees peuvent \^etre exprim\'ees 
en secondes, minutes, heures, jours, semaines, mois, trimestres ou ann\'ees. 
La p\'eriode {\bf Volume Retention} s'applique ind\'ependamment des p\'eriodes {\bf Job Retention} 
et {\bf File Retention} d\'efinies dans la ressource Client. Ceci signifie que la 
p\'eriode la plus courte est celle qui s'applique.Notez bien que lorsque la p\'eriode 
{\bf Volume Retention} a \'et\'e atteinte les enregistrements de Job et ceux de fichiers 
sont supprimm\'es les uns et les autres.
Cet \'elagage peut aussi se produire \`a l'ex\'ecution de la commande {\bf status dir} car elle 
applique des algorithmes similaires \`a ceux utilis\'es pour d\'eterminer le prochain volume 
disponible.

Il est important de savoir que lorsque la p\'eriode Volume Retention expire, 
Bacula ne recycle pas syst\'ematiquement le volume concern\'e. Il tente de conserver 
les donn\'ees intactes aussi longtemps que possible avant d'\'ecrire sur ce volume.

La valeur par d\'efaut est 365 jours. Notez que cette directive r\`egle la valeur par 
d\'efaut pour chaque enregistrement de volume du catalogue lorsque le volume 
est cr\'e\'e. Cette valeur du catalogue peut ensuite \^etre modifi\'ee avec la commande 
{\bf update } du programme Console.

En d\'efinissant plusieurs pools avec diff\'erentes p\'eriodes de r\'etention (volume 
retention), vous pouvez efficacement g\'erer vos cartouches avec, par exemple 
un pool de cartouches recycl\'e chaque semaine, un autre recycl\'e chaque mois, et 
ainsi de suite. Cependant, il faut bien garder \`a l'esprit que si votre p\'eriode 
de r\'etention {\bf Volume Retention} est trop courte, il peut arriver que votre 
derni\`ere sauvegarde Full valide soit supprim\'ee, de sorte que vous n'ayez plus 
une sauvegarde compl\`ete de votre syst\`eme, et que votre prochaine incr\'ementale 
soit \'elev\'ee en une Full. Par cons\'equent, la valeur minimum de la p\'eriode 
{\bf Volume Retention} devrait \^etre au moins le double de l'intervalle 
s\'eparant vos Fulls. Autrement dit, pour des Fulls mensuelles, la p\'eriode 
{\bf Volume Retention} devrait \^etre sup\'erieure ou \'egale \`a deux mois.

Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande {\bf update} du programme Console.

\label{PoolRecycle}

\item [Recycle = \lt{}yes|no\gt{}]
   \index[dir]{Recycle}
   \index[dir]{Directive!Recycle}
Cette directive sp\'ecifie la valeur par d\'efaut pour le recyclage des volumes purg\'es.
Si elle est activ\'ee ({\bf yes}) et si Bacula a besoin d'un volume mais n'en trouve 
aucun utilisable, il recherche alors les volumes purg\'es (c'est \`a dire ceux dont tous 
les jobs et fichiers ont expir\'e et ont, de fait, \'et\'e supprim\'es du catalogue). Si un 
volume est recycl\'e, toutes les donn\'ees pr\'ecedemment \'ecrites sur ce volumes seront 
\'ecras\'ees. Si le recyclage est d\'esactiv\'e ({\bf no}), le volume ne sera pas recycl\'e, et ainsi 
les donn\'ees resteront valides. Si vous souhaitez r\'eutiliser un volume dont le drapeau de 
recyclage est no (0 dans le catalogue), vous devez manuellement le changer en yes (commande 
update).

Notez que la valeur d\'efinie par cette directive dans le fichier de configuration du
Director est la valeur par d\'efaut utilis\'ee lors de la cr\'eation d'un volume. Une fois
le volumes cr\'e\'e, modifier la valeur dans le fichier de configuration ne changera
pas ce qui est stock\'e sur le volume. Pour changer cette valeur pour un volume
existant, vous devez utiliser la commande {\bf update} du programme Console.

\label{RecycleOldest}

\item [Recycle Oldest Volume = \lt{}yes|no\gt{}]
   \index[dir]{Recycle Oldest Volume}
   \index[dir]{Directive!Recycle Oldest Volume}
Cette directive indique au Director de rechercher le volume le plus ancien 
du pool lorsq'un nouveau est requis par le Storage Daemon et qu'aucun autre 
n'est disponible. Le catalog est alors {\bf \'elagu\'e} dans le respect des 
p\'eriodes {\bf Job}, {\bf File} et {\bf Volume Retention}, c'est pourquoi cette 
directive est, de {\bf tr\`es} loin, pr\'ef\'erable \`a directive Purge Oldest Volume. 

Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans 
un pool et que vous voulez cycler sur ces volumes apr\`es avoir sp\'ecifi\'e 
les p\'eriodes de r\'etention qui conviennent.  

\label{RecycleCurrent}

\item [Recycle Current Volume = \lt{}yes|no\gt{}]
   \index[dir]{Recycle Current Volume}
   \index[dir]{Directive!Recycle Current Volume}
Si Bacula a besoin d'un nouveau volume, cette directive lui indique d'\'elaguer 
le volume dans le respect des p\'eriodes {\bf Job}, {\bf File} et 
{\bf Volume Retention}. Si tous les jobs sont \'elagu\'es, (c'est \`a dire si le 
volume est purg\'e), alors le volume est recycl\'e et sera utilis\'e pour la 
prochaine op\'eration d'\'ecriture. Cette directive respecte toutes les 
p\'eriodes {\bf Job}, {\bf File} et {\bf Volume Retention}, c'est pourquoi 
elle est , de {\bf tr\`es} loin, pr\'ef\'erable \`a la directive Purge Oldest Volume.

Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans
un pool et que vous voulez cycler sur ces volumes apr\`es avoir sp\'ecifi\'e
les p\'eriodes de r\'etention qui \'elaguent les volumes avant que vous n'ayez 
termin\'e le cycle sur les volumes.

\label{PurgeOldest}

\item [Purge Oldest Volume = \lt{}yes|no\gt{}]
   \index[dir]{Purge Oldest Volume}
   \index[dir]{Directive!Purge Oldest Volume}
Cette directive indique au Director de rechercher le volume utilis\'e le plus 
ancien dans le pool lorsqu'un nouveau volume est requis par le Storage 
Daemon et qu'aucun n'est disponible. Le catalogue est alors purg\'e sans 
\'egards pour les p\'eriodes de r\'etention des fichiers et jobs \'ecrits sur ce 
volume. Le volume est alors recycl\'e pour \^etre utilis\'e pour la prochaine 
op\'eration d'\'ecriture. Cette directive outrepasse toute p\'eriode de r\'etention 
(Job,  File, ou Volume) que vous avez pu sp\'ecifier par ailleurs.

Cette directive peut \^etre utile si vous avez un nombre fixe de volumes dans
un pool et que vous voulez cycler sur ces volumes lorsque tous les volumes 
sont pleins, sans avoir \`a vous soucier de param\'etrer les p\'eriodes de 
r\'etentions qui conviendraient. Cependant, en l'utilisant, vous courrez le 
risque de perdre toutes vos donn\'ees.

{\bf Soyez conscient que {\bf Purge Oldest Volume} ne fait aucun cas d'aucune 
p\'eriode de r\'etention.} Si vous activez cette directive alors que vous ne poss\'edez 
qu'un seul volume, ce volume sera syst\'ematiquement \'ecras\'e tout de suite apr\`es 
avoir \'et\'e rempli ! Aussi, assurez vous au moins d'avoir un nombre d\'ecent de 
volumes dans votre pool avant d'ex\'ecuter un job. Si vous voulez que les p\'eriodes 
de r\'etention soient prises en compte, n'utilisez pas cette directive. Pour 
sp\'ecifier une p\'eriode de r\'etention, utilisez la directive {\bf Volume Retention} 
(voir ci dessus).

Je recommande fortement de ne pas utiliser cette directive, car il est certain que 
t\^ot ou tard, Bacula recyclera un volume contenant des donn\'ees valides et r\'ecentes.
La valeur par d\'efaut est {\bf no}

\item [Cleaning Prefix = \lt{}string\gt{}]
   \index[dir]{Cleaning Prefix}
   \index[dir]{Directive!Cleaning Prefix}
Cette directive d\'efinit un pr\'efixe qui, s'il correspond au d\'ebut du nom d'un 
volume lors de son \'etiquettage, indique \`a Bacula que le volume en question est 
une cartouche de nettoyage, qui aura le statut {\bf VolStatus = Cleaning}. 
Ainsi Bacula ne tentera jamais d'utiliser cette cartouche. Cette option est 
particuli\`erement utile avec les librairies \'equip\'ees de lecteurs de codes barres o\`u, 
conventionnellement, les codes barres commen\c {c}nt par {\bf CLN} sont trait\'es en 
tant que cartouches de nettoyage.

\label{Label}

\item [Label Format = \lt{}format\gt{}]
   \index[dir]{Label Format}
   \index[dir]{Directive!Label Format}
Cette directive pr\'ecise le format des \'etiquettes des volumes de ce pool. 
La directive {\bf Format} est utilis\'ee comme un patron pour cr\'eer de nouveaux 
noms de volumes lors de l'\'etiquettage automatique.

Le {\bf format} devrait \^etre sp\'ecifi\'e entre guillemets, et consiste en une 
cha\^ine de lettres, chiffres et caract\`eres sp\'eciaux tiret  ({\bf -}), soulign\'e 
({\bf \_}), double point ({\bf :}) et point ({\bf .}), qui sont consid\'er\'es valides 
pour un nom de volume.

De plus, le {\bf format} peut comporter des caract\`eres variables qui seront 
substitu\'ees par un algorithme complexe, ce qui permet de cr\'eer des noms de volumes 
avec plusieurs formats diff\'erents. En tous les cas, le processus d'expansion des 
variables doit aboutir au jeu de caract\`eres d\'efinis comme l\'egaux dans le 
dernier paragraphe. G\'en\'eralement, ces caract\`eres variables commencent par 
un signe dollar ({\bf \$}) ou un crochet droit  ({\bf [}). Si vous sp\'ecifiez 
des caract\`eres variables vous devriez toujours les encadrer de guillemets. 
Pour plus de d\'etails sur ce sujet, veuillez consulter le chapitre 
\ilink{Variable Expansion}{_ChapterStart50} de ce manuel.

Si aucun caract\`ere variable n'est d\'ecouvert dans la cha\^ine, le nom de volume 
sera constitu\'e de la cha\^ine {\bf format} suffix\'ee du nombre de volumes dans le 
pool plus un, au format 4 chiffres et avec des z\'eros en t\^ete. Par exemple, 
avec {\bf Label Format = ''File-``}, les volumes seront nomm\'es 
{\bf File-0001}, {\bf File-0002}, ...

Exception faite des variables sp\'ecifiques aux jobs, vous pouvez tester votre 
{\bf LabelFormat} en utilisant la section \ilink{ var command}{var} du 
chapitre Console de ce manuel.

Dans la plupart des cas, vous devriez encadrer la sp\'ecification de format (la 
partie \`a droite du signe \'egale) entre guillemets. Notez que cette directive est 
obsol\`ete et qu'elle est remplac\'ee, \`a partir de la version 1.37 par un script Python 
pour la cr\'eation des noms de volumes.

\end{description}

Pour qu'un pool puisse \^etre utilis\'e lors d'une sauvegarde, il faut qu'il lui soit 
associ\'e au moins un volume. Les volumes sont cr\'e\'es et affect\'es aux pools avec les 
commandes {\bf label} ou {\bf add} du programme {\bf Bacula Console}. Outre 
l'affectation du volume au pool (c'est \`a dire son r\'ef\'erencement 
dans le catalogue), le volume physique doit recevoir une \'etiquette logicielle 
valide pour que Bacula l'accepte. Ceci peut \^etre r\'ealis\'e automatiquement grāce 
\`a la commande {\bf label}. D'autre part, Bacula peut effectuer cette op\'eration 
automatiquement si l'instruction lui en est donn\'e, mais cette fonctionnalit\'e 
n'est pas encore pleinement impl\'ement\'ee.

Voici un exemple d'une d\'efinition de ressource Pool valide :

\footnotesize
\begin{verbatim}
 
Pool {
  Name = Default
  Pool Type = Backup
}
\end{verbatim}
\normalsize

\subsubsection*{Le Scratch Pool}
\addcontentsline{toc}{subsection}{Scratch Pool}
\index[general]{Scratch Pool}
En g\'en\'eral, vous pouvez nommer vos pool \`a votre guise, il existe cependant 
une importante restriction : le pool nomm\'e {\bf Scratch}, s'il existe, 
se comporte comme une r\'eserve de volumes o\`u Bacula pourra puiser s'il ne trouve 
aucun volume utilisable dans le pool normalement utilis\'e par le job. Le volume 
est alors d\'eplac\'e du pool Scratch vers le pool en d\'efaut.

\subsection*{La ressource Catalog}
\label{CatalogResource}
\index[general]{Resource!Catalog }
\index[general]{Ressource Catalog}
\addcontentsline{toc}{subsection}{La ressource Catalog}

La ressource Catalog pr\'ecise quel catalogue utiliser pour le job courant. 
Actuellement, Bacula ne peut utiliser qu'un type de serveur de bases de 
donn\'ees d\'efini lors de sa configuration : SQLite, MySQL, PostgreSQL. 
En revanche, vous pouvez utiliser autant de 
catalogues que vous le souhaitez. Par exemple, vous pouvez avoir un 
catalogue par client, ou encore un catalogue pour les sauvegardes, un autre 
pour les jobs de type Verify et un troisi\`eme pour les restaurations.

\begin{description}

\item [Catalog]
   \index[dir]{Catalog}
   \index[dir]{Directive!Catalog}
D\'ebut de la ressource Catalog. Il faut au moins une ressource Catalogue.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
Le nom du Catalog. Il n'a pas besoin d'\^etre en relation avec le nom sur le serveur 
de base de donn\'ees. Ce nom sera repris dans la ressource Client, indiquant ainsi 
que toutes les donn\'ees relatives \`a ce client sont maintenues dans ce catalogue.
Cette directive est requise.*


\item [password = \lt{}password\gt{}]
   \index[dir]{password}
   \index[dir]{Directive!password}
Cette directive sp\'ecifie le mot de passe \`a utiliser pour se connecter au 
catalogue. Cette directive est requise.

\item [DB Name = \lt{}name\gt{}]
   \index[dir]{DB Name}
   \index[dir]{Directive!DB Name}
Cette directive sp\'ecifie le nom de la base de donn\'ees. Si vous utilisez plusieurs 
catalogues, vous sp\'ecifiez lequel ici. Si vous utilisez un serveur de bases de 
donn\'ees externe plut\^ot que l'int\'egr\'e, vous devez sp\'ecifier un nom connu du 
serveur (autrement dit, le nom que vous avez utilis\'e lorsque vous avez cr\'e\'e les 
tables Bacula.). Cette directive est requise.

\item [user = \lt{}user\gt{}]
   \index[dir]{user}
   \index[dir]{Directive!user}
L'utilisateur habilit\'e \`a se connecter au catalogue.  Cette directive est requise.

\item [DB Socket = \lt{}socket-name\gt{}]
   \index[dir]{DB Socket}
   \index[dir]{Directive!DB Socket}
Il s'agit du nom d'un {\it socket} \`a utiliser sur la machine locale pour se 
connecter au catalogue. Cette directive n'est utilis\'ee que par MySQL, elle est 
ignor\'ee par SQLite. Normalement, si ni {\bf DB Socket}, ni {\bf DB Address} ne sont 
sp\'ecifi\'ees, MySQL utilise le socket par d\'efaut.

\item [DB Address = \lt{}address\gt{}]
   \index[dir]{DB Address}
   \index[dir]{Directive!DB Address}
Il s'agit de l'adresse du serveur de bases de donn\'ees. En principe, vous  
utiliserez cette directive plut\^ot que {\bf DB Socket} si le serveur de bases de 
donn\'ees est une autre machine. Dans ce cas, vous sp\'ecifierez aussi le port {\bf DB Port}. 
Cette directive n'est utilis\'ee que par MySQL, et ignor\'ee par SQLite. Elle est 
optionnelle.

\item [DB Port = \lt{}port\gt{}]
   \index[dir]{DB Port}
   \index[dir]{Directive!DB Port}
Cette directive d\'efinit le port \`a utiliser en conjonction avec {\bf DB Address} pour 
acc\'eder au catalogue s'il est h\'eberg\'e sur une autre machine. Elle n'est utilis\'ee que par 
 MySQL, et ignor\'ee par SQLite. Elle est optionnelle.

%% \item [Multiple Connections = \lt{}yes|no\gt{}]
%%   \index[dir]{Multiple Connections}
%%   \index[dir]{Directive!Multiple Connections}
%% Par d\'efaut, cette directive est d\'esactiv\'ee, ce qui implique que tous les jobs utilisant  
%% le m\^eme catalogue se partagent une m\^eme  connection au catalogue, et que Bacula n'autorise 
%% qu'un job \`a la fois \`a communiquer. Si vous activez cette directive ({\bf yes}), Bacula 
%% permettra les connection multiples au catalogue, c'est pourquoi la base de donn\'ees 
%% doit supporter le {\it multi thread}. Pour SQLite et PostgreSQL, ce n'est pas un probl\`eme. 
%% Pour MySQL, vous devez vous assurer {\bf attentivement} d'avoir la version {\it multi thread} 
%% de la librairie cliente sur votre syst\`eme. Une fois cette directive activ\'ee, chaque job 
%% disposera de sa propre connection au catalogue, la base de donn\'ees contr\^olant les interactions 
%% entre les diff\'erents jobs. Ceci peut accro\^itre significativement les op\'erations de la 
%% base de donn\'ees si vous ex\'ecutez plusieurs jobs simultan\'es. De plus, pour SQLite et PostgreSQL, 
%% Bacula activera automatiquement les transactions dans la base de donn\'ees. Ceci peut accro\^itre 
%% significativement les insertions d'attributs dans le catalogue, que ce soit pour un job unique 
%% ou pour plusieurs jobs simultan\'es.

%% Cette directive n'a pas \'et\'e test\'ee. Veuillez, s'il vous pla\^it, la tester scrupuleusement avant 
%% de l'activer en production, et nous fournir un retour de vos tests.

\end{description}

Voici un exemple d'une d\'efinition de ressource Catalog valide :

\footnotesize
\begin{verbatim}
Catalog
{
  Name = SQLite
  dbname = bacula;
  user = bacula;
  password = ""                       # no password = no security
}
\end{verbatim}
\normalsize

en voici une deuxi\`eme pour un catalogue sur une autre machine :

\footnotesize
\begin{verbatim}
Catalog
{
  Name = MySQL
  dbname = bacula
  user = bacula
  password = ""
  DB Address = remote.acme.com
  DB Port = 1234
}
\end{verbatim}
\normalsize

\subsection*{La ressource Messages}
\label{MessagesResource2}
\index[general]{Resource!Messages }
\index[general]{Messages Ressource }
\addcontentsline{toc}{subsection}{Messages Resource}

Pour les d\'etails sur la ressource Messages, veuillez consulter 
le chapitre \ilink{La ressource Messages}{_ChapterStart15} de ce manuel.

\subsection*{La ressource Console}
\label{ConsoleResource1}
\index[general]{Console Resource }
\index[general]{Resource!Console }
\addcontentsline{toc}{subsection}{Console Resource}

A partir de la version 1.33 de Bacula, l'administrateur dispose de trois sortes de 
consoles diff\'erentes pour interagir avec le Director. Ces trois types de consoles 
comportent trois niveaux de s\'ecurit\'e diff\'erents.

\begin{itemize}
\item Le premier type de console est une console {\bf anonyme} ou {\bf par d\'efaut}, 
  qui d\'etient tous les privil\`eges. La ressource Console n'est pas requise pour 
  ce type puisque le mot de passe est sp\'ecifi\'e dans la ressource Director et par 
  cons\'equent, de telles consoles n'ont pas de nom d\'efini par une directive {\bf Name =}. 
  C'est le premier type de console impl\'ement\'e dans les versions ant\'erieures \`a 1.33, il 
  demeure valide. Sont usage est typiquement r\'eserv\'e aux administrateurs.
\item Le second type de console, apparu avec la version 1.33 est une console "nomm\'ee" 
  d\'efinie dans une ressource Console simultan\'ement dans le fichier de configuration du 
  Director et dans le fichier de configuration de la Console, les noms et mots de passe 
  devant \^etre en conjonction dans ces deux fichiers. 
  Ce type de console ne d\'etient absolument aucun privil\`ege, except\'es ceux explicitement 
  sp\'ecifi\'es dans la ressource Console du fichier de configuration du Director. 
  Ainsi, vous pouvez d\'efinir plusieurs consoles avec des noms et mots de passe distincts 
  destin\'ees \`a diff\'erents utilisateurs avec diff\'erents privil\`eges. Par d\'efaut ces consoles 
  ne peuvent absolument rien faire. Il vous revient de leur accorder des privil\`eges 
  ou plut\^ot des acc\`es aux commandes et ressources en sp\'ecifiant des listes de 
  contr\^ole d'acc\`es (ACL) dans la ressource Console du fichier de configuration du 
  Director. Les ACLs sont sp\'ecifi\'ees par une directive suivie d'une liste de noms 
  d'acc\`es. Vous trouverez des exemples ci-dessous. 
\item Le troisi\`eme type de console est similaire au second en ce qu'il requiert 
  une d\'efinition de ressource Console dans le fichier de configuration du
  Director et dans le fichier de configuration de la Console. De plus, si le nom de 
  la console sp\'ecifi\'e par la directive {\bf Name =} est le m\^eme que le nom du client, 
  cette console est autoris\'ee \`a utiliser la commande {\bf SetIP} pour modifier la 
  directive Address dans la ressource client du fichier de configuration du
  Director en l'adresse IP de la console. Ceci permet aux portables et autres machines 
  utilisant DHCP (adresses IP dynamiques) de "notifier" le Director de leur adresse 
  IP courante.
\end{itemize}

La ressource Console est optionnelle. Les directives suivantes sont permises 
dans le fichier de configuration du Director.

\begin{description}

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
Le nom de la console. Ce nom doit \^etre en conjonction avec celui sp\'ecifi\'e 
dans le fichier de configuration de la Console (comme c'est le cas pour les 
d\'efinitions de clients).

\item [Password = \lt{}password\gt{}]
   \index[dir]{Password}
   \index[dir]{Directive!Password}
Sp\'ecifie le mot de passe qu'une console nomm\'ee doit fournir pour \^etre autoris\'ee. 
Le m\^eme mot de passe doit appara\^itre dans la ressource Console du fichier 
de configuration de la Console. Pour plus de s\'ecurit\'e, le mot de passe n'est 
jamais r\'eellement transmis \`a travers le r\'eseau, mais plut\^ot un code de 
hachage de type {\it challenge response} cr\'e\'e \`a partir du mot de passe. 
Cette directive est requise. Si vous disposez de {\bf /dev/random} ou  {\bf bc} 
sur votre machine, Bacula g\'en\`erera al\'eatoirement ce mot de passe lors du 
processus de configuration, autrement, il sera laiss\'e blanc.

\item [JobACL = \lt{}name-list\gt{}]
   \index[dir]{JobACL}
   \index[dir]{Directive!JobACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Job 
qui peuvent \^etre acc\'ed\'es par la console. Sans cette directive, la console ne peut 
acc\'eder \`a aucune des ressources Job d\'efinies dans le fichier de configuration 
du Director. Plusieurs ressources Job peuvent \^etre sp\'ecifi\'ees en les s\'eparant par 
des virgules, et/ou en sp\'ecifiant plusieurs directives JobACL. Par exemple, la 
directive peut \^etre sp\'ecifi\'ee ainsi :

\footnotesize
\begin{verbatim}
    JobACL = kernsave, "Backup client 1", "Backup client 2"
    JobACL = "RestoreFiles"
    
\end{verbatim}
\normalsize

Avec cette sp\'ecificaton, la console peut acc\'eder aux ressources du Director pour 
les quatre jobs d\'esign\'es par la directive JobACL, et uniquement \`a eux.

\item [ClientACL = \lt{}name-list\gt{}]
   \index[dir]{ClientACL}
   \index[dir]{Directive!ClientACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Client 
iaccessibles par la console.

\item [StorageACL = \lt{}name-list\gt{}]
   \index[dir]{StorageACL}
   \index[dir]{Directive!StorageACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Storage 
accessibles par la console.

\item [ScheduleACL = \lt{}name-list\gt{}]
   \index[dir]{ScheduleACL}
   \index[dir]{Directive!ScheduleACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Schedule
accessibles par la console.

\item [PoolACL = \lt{}name-list\gt{}]
   \index[dir]{PoolACL}
   \index[dir]{Directive!PoolACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Pool
accesibles ar la console.

\item [FileSetACL = \lt{}name-list\gt{}]
   \index[dir]{FileSetACL}
   \index[dir]{Directive!FileSetACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources FileSet
accessibles par la console.

\item [CatalogACL = \lt{}name-list\gt{}]
   \index[dir]{CatalogACL}
   \index[dir]{Directive!CatalogACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de noms de ressources Catalog
accessibles par la console.

\item [CommandACL = \lt{}name-list\gt{}]
   \index[dir]{CommandACL}
   \index[dir]{Directive!CommandACL}
Cette directive est utilis\'ee pour sp\'ecifier une liste de commandes de la console
qui peuvent \^etre ex\'ecut\'ees par la console.

\end{description}

En plus des diff\'erents noms de ressources du Director et de commandes, le mot-clef 
sp\'ecial {\bf *all*} peut \^etre sp\'ecifi\'e dans chacune des directives ACL ci-dessus.
Sa pr\'esence signifie que toute ressource ou commande (pourvu qu'elle soit appropri\'ee 
\`a la directive) est accept\'ee. Pour un exemple de fichier de configuration, voyez le 
chapitre \ilink{Configuration de la console}{_ChapterStart36} de ce manuel

\subsection*{La ressource Counter}
\label{CounterResource}
\index[general]{Ressource!Counter }
\index[general]{Ressource Counter }
\addcontentsline{toc}{subsection}{Ressource Counter}
La ressource Counter d\'efinit une variable-compteur qui peut \^etre acc\'ed\'ee par le 
processus d'expansion de variables utilis\'e pour la cr\'eation de d'\'etiquettes (labels) 
de volumes avec la directive {\bf LabelFormat}. Consultez le paragraphe sur la directive 
\ilink{LabelFormat}{Label} de ce chapitre pour plus de d\'etails.

\begin{description}

\item [Counter]
   \index[dir]{Counter}
   \index[dir]{Directive!Counter}
D\'ebut de la ressource Counter. les directives Counter sont optionnelles.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name}
   \index[dir]{Directive!Name}
iLe nom de la variable-compteur. Il s'agit du nom que vous utiliserez pour vous r\'ef\'erer 
\`a cette variable et acc\'eder \`a sa valeur.

\item [Minimum = \lt{}integer\gt{}]
   \index[dir]{Minimum}
    \index[dir]{Directive!Minimum}
Sp\'ecifie la valeur minimale de la variable-compteur. Cette valeur devient celle par d\'efaut. 
Si elle n'est pas fournie, sa valeur est z\'ero.

\item [Maximum = \lt{}integer\gt{}]
   \index[dir]{Maximum}
    \index[dir]{Directive!Maximum}
Sp\'ecifie la valeur maximale de la variable-compteur. Si elle n'est pas fournie, ou si elles 
est r\'egl\'ee \`a z\'ero, la variable compteur peut prendre une valeur maximale de 2 147 483 648 
($2^{31}$). Au del\`a de cette valeur, le compteur est remis au minimum.

\item [*WrapCounter = \lt{}counter-name\gt{}]
   \index[dir]{*WrapCounter}
   \index[dir]{Directive!*WrapCounter}
Si cette valeur est sp\'ecifi\'ee, lorsque la variable-compteur d\'epasse le maximum et 
est remise au minimum, le compteur sp\'ecifi\'e par la directive {\bf WrapCounter} est 
incr\'ement\'e. (Ceci n'est, pour le moment, pas impl\'ement\'e.)

\item [Catalog = \lt{}catalog-name\gt{}]
   \index[dir]{Catalog}
   \index[dir]{Directive!Catalog}
Si cette directive est sp\'ecifi\'ee, le compteur et sa valeur sont sauvegard\'es dans le 
catalogue sp\'ecifi\'e. Dans le cas contraire, le compteur est red\'efini \`a chaque 
d\'emarrage de Bacula.

\end{description}

\subsection*{ Voici un exemple complet de fichier de configuration du Director.}
\label{SampleDirectorConfiguration}
\index[general]{File!Exemple Complet Director Configuration }
\index[general]{Exemple Complet Fichier Configuration Director}
\addcontentsline{toc}{subsection}{Exemple Complet Fichier Configuration Directo}
Un exemple de fichier de configuration du Director pourrait \^etre le suivant :


\footnotesize
\begin{verbatim}
#
# Default Bacula Director Configuration file
#
#  The only thing that MUST be changed is to add one or more
#   file or directory names in the Include directive of the
#   FileSet resource.
#
#  For Bacula release 1.15 (5 March 2002) -- redhat
#
#  You might also want to change the default email address
#   from root to your address.  See the "mail" and "operator"
#   directives in the Messages resource.
#
Director {                            # define myself
  Name = rufus-dir
  QueryFile = "/home/kern/bacula/bin/query.sql"
  WorkingDirectory = "/home/kern/bacula/bin/working"
  PidDirectory = "/home/kern/bacula/bin/working"
  Password = "XkSfzu/Cf/wX4L8Zh4G4/yhCbpLcz3YVdmVoQvU3EyF/"
}
# Define the backup Job
Job {
  Name = "NightlySave"
  Type = Backup
  Level = Incremental                 # default
  Client=rufus-fd
  FileSet="Full Set"
  Schedule = "WeeklyCycle"
  Storage = DLTDrive
  Messages = Standard
  Pool = Default
}
Job {
  Name = "Restore"
  Type = Restore
  Client=rufus-fd
  FileSet="Full Set"
  Where = /tmp/bacula-restores
  Storage = DLTDrive
  Messages = Standard
  Pool = Default
}
   
# List of files to be backed up
FileSet {
  Name = "Full Set"
  Include {
    Options { signature=SHA1 }
#
#  Put your list of files here, one per line or include an
#    external list with:
#
#    @file-name
#
#  Note: / backs up everything
  File = /
  }
  Exclude { }
}
# When to do the backups
Schedule {
  Name = "WeeklyCycle"
  Run = Full sun at 1:05
  Run = Incremental mon-sat at 1:05
}
# Client (File Services) to backup
Client {
  Name = rufus-fd
  Address = rufus
  Catalog = MyCatalog
  Password = "MQk6lVinz4GG2hdIZk1dsKE/LxMZGo6znMHiD7t7vzF+"
  File Retention = 60d      # sixty day file retention
  Job Retention = 1y        # 1 year Job retention
  AutoPrune = yes           # Auto apply retention periods
}
# Definition of DLT tape storage device
Storage {
  Name = DLTDrive
  Address = rufus
  Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
  Device = "HP DLT 80"      # same as Device in Storage daemon
  Media Type = DLT8000      # same as MediaType in Storage daemon
}
# Definition for a DLT autochanger device
Storage {
  Name = Autochanger
  Address = rufus
  Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
  Device = "Autochanger"    # same as Device in Storage daemon
  Media Type = DLT-8000     # Different from DLTDrive
  Autochanger = yes
}
# Definition of DDS tape storage device
Storage {
  Name = SDT-10000
  Address = rufus
  Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
  Device = SDT-10000        # same as Device in Storage daemon
  Media Type = DDS-4        # same as MediaType in Storage daemon
}
# Definition of 8mm tape storage device
Storage {
  Name = "8mmDrive"
  Address = rufus
  Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
  Device = "Exabyte 8mm"
  MediaType = "8mm"
}
# Definition of file storage device
Storage {
  Name = File
  Address = rufus
  Password = "jMeWZvfikUHvt3kzKVVPpQ0ccmV6emPnF2cPYFdhLApQ"
  Device = FileStorage
  Media Type = File
}
# Generic catalog service
Catalog {
  Name = MyCatalog
  dbname = bacula; user = bacula; password = ""
}
# Reasonable message delivery -- send most everything to
#   the email address and to the console
Messages {
  Name = Standard
  mail = root@localhost = all, !skipped, !terminate
  operator = root@localhost = mount
  console = all, !skipped, !saved
}
    
# Default pool definition
Pool {
  Name = Default
  Pool Type = Backup
  AutoPrune = yes
  Recycle = yes
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
  Name = Monitor
  Password = "GN0uRo7PTUmlMbqrJ2Gr1p0fk0HQJTxwnFyE4WSST3MWZseR"
  CommandACL = status, .status
}
\end{verbatim}
\normalsize
