%%
%%

\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 pool de volumes
   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  }
   Le nom du Director utilis\'e par l'administrateur syst\`eme. Cette directive
est requise  
  
\item [Description = \lt{ }texte\gt{}]
   \index[dir]{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  }
   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[console]{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[console]{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. 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.
 
\item [Pid Directory = \lt{}R\'epertoire\gt{}]
   \index[fd]{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 [QueryFile = \lt{}Chemin\gt{}]
   \index[dir]{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[fd]{Maximum Concurrent Jobs  }
   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[console]{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[console]{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[console]{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.

\item [DIRport = \lt{}num\'ero-de-port\gt{}]
   \index[console]{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[console]{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îne 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).

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[console]{Job }
   D\'ebut de la ressource Job. Il faut d\'efinir au moins une ressource Job.

\item [Name = \lt{}name\gt{}]
   \index[console]{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 [Type = \lt{}job-type\gt{}]
   \index[console]{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[console]{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[console]{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[console]{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\ccon de 
   Tripwire.

\item [Admin]
   \index[fd]{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[fd]{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[fd]{Full }
   Tous les fichiers du FileSet, qu'ils aient \'et\'e modifi\'es ou non.

\item [Incremental]
   \index[fd]{Incremental }
   Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde valide du FileSet 
   sp\'ecifi\'e. 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îtront 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.

\item [Differential]
   \index[fd]{Differential }
   Tous les fichiers modifi\'es depuis la derni\`ere sauvegarde Full valide du FileSet
   sp\'ecifi\'e. 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îtront 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.

\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[fd]{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[fd]{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[fd]{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[fd]{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 {\bf Verify Job = \lt{}Job-Resource-Name\gt{}}
   \index[fd]{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 {\bf JobDefs = \lt{}JobDefs-Resource-Name\gt{}}
   \index[fd]{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 {\bf Bootstrap = \lt{}bootstrap-file\gt{}}
   \index[dir]{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.

\item {\bf \label{writebootstrap} Write Bootstrap =  \lt{}bootstrap-file-specification\gt{}}
\index[fd]{a name }

   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.

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 {\bf Client = \lt{}client-resource-name\gt{}}
   \index[fd]{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\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 {\bf FileSet = \lt{}FileSet-resource-name\gt{}}
   \index[fd]{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 {\bf Messages = \lt{}messages-resource-name\gt{}}
   \index[dir]{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 {\bf Pool = \lt{}pool-resource-name\gt{}}
   \index[dir]{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 {\bf Full Backup Pool = \lt{}pool-resource-name\gt{}  }
   \index[dir]{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 {\bf Differential Backup Pool = \lt{}pool-resource-name\gt{}  }
   \index[dir]{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 {\bf Incremental Backup Pool = \lt{}pool-resource-name\gt{}  }
   \index[dir]{Incremental 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 {\bf Schedule = \lt{}schedule-name\gt{}}
   \index[dir]{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 {\bf Storage = \lt{}storage-resource-name\gt{}}
   \index[dir]{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 {\bf Max Start Delay = \lt{}time\gt{}}
   \index[sd]{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 {\bf Max Run Time = \lt{}time\gt{}}
   \index[sd]{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 {\bf Max Wait Time = \lt{}time\gt{}}
   \index[sd]{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 {\bf Prune Jobs = \lt{}yes|no\gt{}}
   \index[fd]{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 {\bf Prune Files = \lt{}yes|no\gt{}}
   \index[fd]{Prune Files  }
   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 {\bf Prune Volumes = \lt{}yes|no\gt{}}
   \index[fd]{Prune Volumes  }
   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 {\bf Run Before Job = \lt{}command\gt{}}
   \index[fd]{Run Before Job  }
   La commande sp\'ecifi\'ee est ex\'ecut\'ee en tant que programme externe avant le 
   lancement du job. Tout retour de la commande sur la sortie standard est 
   incluse dans le rapport de job de Bacula. La chaîne {bf command} doit \^etre 
   un nom de programme valide ou un script shell. 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. D'autre part, 
   la chaîne {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 :

\footnotesize
\begin{verbatim}
    %% = %
    %c = Nom du client
    %d = Nom du Director
    %i = JobId
    %e = Statut de sortie du job
    %j = Nom unique du job
    %l = Niveau du job
    %n = Nom du job
    %t = Type de job
    %v = Nom de volume
    
\end{verbatim}
\normalsize
Depuis la version 1.30, Bacula contr\^ole le statut de sortie du programme 
RunBeforeJob. S'il est diff\'erent de z\'ero, le job se termine en erreur. 
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 {\bf Run After Job = \lt{}command\gt{}}
   \index[fd]{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îne {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, le job se termine en erreur. 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 Run Before Job}

Un exemple d'utilisation de cette directive est donn\'e au chapitre 
\ilink{Astuces}{JobNotification} de ce manuel. depuis la version 1.30, 
Bacula contr\^ole le statut de sortie du program RunAfter. S'il est 
non nul, le job se termine en erreur.

\item {\bf Client Run Before Job = \lt{}command\gt{}}
   \index[fd]{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}. 
   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.


{\bf Consid\'erations particuli\`eres \`a Windows}
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îte 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 \&()[]\{\}\^{}=;!'+,`\~{} 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}

\item {\bf Client Run After Job = \lt{}command\gt{}}
   \index[fd]{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 Client Run Before Job} ci-dessus.

\item {\bf Rerun Failed Levels = \lt{}yes|no\gt{}}
   \index[fd]{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 {\bf Spool Data = \lt{}yes|no\gt{}}
   \index[fd]{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 {\bf Spool Attributes = \lt{}yes|no\gt{}}
   \index[fd]{Spool Attributes  }
   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 {\bf Where = \lt{}directory\gt{}}
   \index[dir]{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 {\bf Replace = \lt{}replace-option\gt{}}
   \index[dir]{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[fd]{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[fd]{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[fd]{never }
   Si le fichier sauvegard\'e existe d\'ej\`a, Bacula renonce \`a restaurer ce fichier.
\end{description}

\item {\bf Prefix Links=\lt{}yes|no\gt{}}
   \index[fd]{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 {\bf Maximum Concurrent Jobs = \lt{}number\gt{}}
   \index[dir]{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 {\bf Reschedule On Error = \lt{}yes|no\gt{}}
   \index[dir]{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 {\bf Reschedule Interval = \lt{}time-specification\gt{}}
   \index[dir]{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 {\bf Reschedule Times = \lt{}count\gt{}}
   \index[dir]{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.

\label{Priority}
\item {\bf Priority = \lt{}number\gt{}}
   \index[dir]{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, ce qui n'est pas recommand\'e, 
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 } 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 {\bf Write Part After Job = \lt{}yes|no\gt{}}
   \index[sd]{Write Part After Job  }
   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ître 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[sd]{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[sd]{Name  }
   Le nom du Schedule d\'efini. Cette directive est requise.

\item [Run = \lt{}Job-overrides\gt{} \lt{}Date-time-specification\gt{}  ]
   \index[sd]{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\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[sd]{Level }
   Tous les fichiers du FileSet qu'ils aient ou non chang\'e.

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

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

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

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

\item [FullPool=Full]
   \index[sd]{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[sd]{DifferentialPool }
    Sp\'ecifie l'utilisation du Pool nomm\'e {\bf Differential} si le job est une 
    sauvegarde diff\'erentielle.

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

\item [SpoolData=yes|no]
   \index[sd]{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[sd]{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
<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> |
                    <daily-keyword>
<day-spec>        = <day> | <wday-keyword> |
                    <week-keyword> <wday-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\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âce \`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\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îssent 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ître 
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[fd]{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[fd]{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[fd]{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[fd]{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 [s]
   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[fd]{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[fd]{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îne 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[fd]{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îne de caract\`eres jokers \`a appliquer aux fichiers. Notez 
que si {\bf Exclude} n'est pas activ\'ee, cette chaîne s\'electionnera les fichiers 
\`a sauvegarder. Si au contraire {\bf Exclude=yes} est sp\'ecifi\'e, la chaîne 
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ître 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\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ès les doubles quotes 
(l'une préserve l'autre). Si vous utilisez Linux, changez simplement {\bf ufs} en {\bf ext3} 
(ou votre système de fichiers préféré) et l'affaire sera dans le sac.

\item Tout élément de la liste de fichiers file-list précédé par un signe "inférieur" (\lt{}) 
est interprété comme un fichier qui sera lu sur la machine qui héberge le Director 
au moment où le job démarre. Son contenu est supposé être une liste de répertoires ou 
fichiers, un par ligne, à inclure dans la sauvegarde. Les noms ne doivent pas être quotés, même 
s'ils comportent des espaces. Cette fonction vous permet de modifier le fichier externe, 
et ainsi ce qui est sauvegardé sans avoir à redémarrer Bacula comme il le faudrait avec 
le modificateur @ décrit plus haut.

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

\item Si vous spécifiez explicitement un block device (NDT ?) tel que {\bf /dev/hda1}, alors 
Bacula considèrera ceci comme une partition raw à sauvegarder. Dans ce cas, vous êtes 
fortement invité à utiliser l'option {\bf sparse=yes}, faute de quoi vous sauvegarderez 
la partition entière plutôt que seulement les données réellement 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ées de la partition /dev/hd6.

will backup the data in device /dev/hd6.  

Ludovic Strappazon a fait remarquer que cette fonction pouvait servir à sauvegarder 
un disque Microsoft Windows. Il suffit de booter avec un Linux Rescue Disk, puis de 
charger un client Bacula statiquement lié comme décrit dans le chapitre 
link{ Disaster Recovery avec Bacula}{_ChapterStart38} de ce manuel. Sauvegardez alors 
la partition complète. En cas de désastre, vous pouvez alors restaurer la partition 
désirée en bootant une fois encore sur le Linux Rescue Disk et en utilisant le 
client Bacula  statiquement lié.


\item Si vous spécifiez explicitement un périphérique FIFO nommé (créé avec mkfifo), 
ets si vous ajoutez l'option {\bf readfifo=yes}, Bacula lira le FIFO et sauvegardera ses 
données 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ées ainsi obtenues sur le volume. Notez qu'il faut que vous ayez 
un processus qui écrit sur le FIFO, faute de quoi Bacula restera en suspens, et 
abandonnera au bout d'une minute pour passer au fichier suivant. Les données 
lues peuvent être de nature quelconque puisque Bacula les traite comme un flux.

Cette fonction est un excellent moyen de faire une sauvegarde "à chaud" d'une 
très grosse base de données. Vous pouvez utiliser la directive {\bf RunBeforeJob} 
pour créer le FIFO et démarrer un programme qui lit dynamiquement votre base de 
données et l'écrit sur le FIFO. Bacula l'écrira alors sur le volume.

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

\end{itemize}

\end{description}

Voici un exemple de définition de ressource FileSet valide. Notez que le premier 
Include 

The following is an example of a valid FileSet resource definition. Note, the
first Include insère le contenu du fichier {\bf /etc/backup.list} lors du démarrage 
de when 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és dans 
/etc/backup.list seront compressé avec GZIP, qu'une signature SHA1 sera 
calculée sur le contenu des fichiers (leurs données), et que la prise en 
charge particulière des fichiers clairsemés (sparse) s'appliquera.

Les deux répertoires /root/myfile et /usr/lib/another\_file seront aussi 
sauvegardés sans aucune option, mais tous les fichiers à extension  {\bf .o} 
de ces répertoires seront exlus de la sauvegarde.  

Supposons que vous vouliez sauvegarder tout sauf {\bf /tmp} sur votre système.
La commande {\bf df} vous fournit le résultat 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écifier {\bf /} dans votre liste d'inclusions, 
Bacula ne sauvegardera que le système de fichiers {\bf /dev/hda5}. Pour 
sauvegarder tous vos systèmes de fichiers sans inclure les systèmes de fichiers 
montés 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 étant sur son propre système de fichiers et n'étant pas explicitement nommé 
dans la liste d'inclusion, il n'est pas nécessaire de le spécifier dans la liste 
d'exclusion. Cependant, il peut être préférable de le faire malgré tout par 
souci de clarté et au cas où il ne serait plus sur sa propre partition après un 
remplacement de disques.

Ayez conscience qu'il peut être {\bf très} dangereux de permettre à Bacula de traverser ou 
changer de système de fichiers au gré 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ée ({\bf /mnt/matou}), et puisque 
{\bf onefs} est désactivée, Bacula traverse les systèmes de fichiers. 
Si jamais {\bf /mnt/matou} contient lui même un point de montage où le système 
de fichiers de la machine sauvegardée est monté, ce qui est souvent le cas, 
vous vous retrouvez pris dans un boucle récursive, 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ème, n'écrit sur cette 
partition. En guise de précaution, nous recommandons ardemment de ne sauvegarder 
en mode raw que des partitions non montées, ou montées en lecture seule. Ceci peut 
être fait si nécessaire avec la directive {\bf RunBeforeJob}.

\label{win32}

\subsection*{Considérations 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épertoires devraient 
être précédés de double-points (comme dans "c:"). Cependant, les séparateurs de 
champs doivent être spécifiés selon la convention Unix (c'est à dire, la barre oblique 
avant : "/"). Si vous souhaitez inclure une apostrophe dans un nom de fichier, précédez-la 
d'une barre oblique arrière (\textbackslash{}\textbackslash{}). Par exemple, vous pourriez 
utiliser ce qui suit pour sauvegarder le répertoire "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ègles suivante :

\begin{itemize}
\item les noms de fichiers sont sensibles à la casse, aussi vous devez utilise la 
casse correcte ;
\item vous ne devez pas spécifier de barre oblique finale pour exclure un répertoire ;
\item si vos noms de fichiers comportent des espaces, vous devez les encadrer de 
quillemets. Les barres obliques arrières (\textbackslash{}\textbackslash{}) ne 
fonctionnent pas ;
\item si vous utilisez l'ancienne syntaxe des listes d'exclusion (mentionnée ci-dessous), 
vous ne devriez pas spécifier la lettre référençant le disque dans une liste d'exclusion. 
La nouvelle syntaxe décrite ci-dessus devrait fonctionner correctement en incluant la lettre 
du disque.
\end{itemize}

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

Sur les systèmes Win32, si vous déplacez un répertoire ou si vous renommez 
un fichier de la liste à sauvegarder, et si une Full a déjà eu lieu, Bacula 
ne saura reconnaître qu'il existe de nouveaux fichiers à sauvegarder lors d'une 
incrémentale ou d'une différentielle (faites-en le reproche à Microsoft, pas à moi !). 
Pour pallier à ce problème, veuillez copier tout répertoire ou fichier de la 
zone sauvegardée. Si vous ne disposez pas de suffisamment d'espace disque, 
déplacez-les, mais lancez alors une sauvegarde Full.

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

Vous pouvez aussi inclure des noms de fichiers ou chemins absolus, en plus 
de l'utilisation de caractères jokers et de la directive {\bf Exclude=yes} dans 
les ressources Options comme exposé ci-dessus, en ajoutant simplement 
les fichiers à 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ées de cette liste d'exclusion ne l'ont été 
que pour des motifs de mise en page, elles doivent en réalité être écrites 
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érieures à 1.34.3 est obsolète, 
mais fonctionne encore. Nous vous encourageons à utiliser la nouvelle forme, 
car le code correspondant sera supprimé à 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ée précise de ce qui sera effectivement 
sauvegardé par un FileSet, ou si vous voulez vous assurer de l'efficacité  
d'une liste d'exclusion, vous pouvez utiliser la commande {\bf estimate} 
du programme Console. Voyez \ilink{estimate command}{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ères Unicode (i.e. \gt{} 0xFF) ne 
peuvent, pour le moment, être nommé eplicitement. Vous devez inclure de tels 
fichiers en désignant un répertoire de niveau supérieur ou une lettre de disque 
ne contenant pas de caractère 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éfinit les attributs des clients servis (sauvegardés) 
par ce Director. Il faut une ressource Client par machine sauvegardée.

\begin{description}

\item [Client (ou FileDaemon)]
   \index[dir]{Client (ou FileDaemon) }
   Début des directives Client.

\item [Name = \lt{}name\gt{}]
   \index[dir]{Name  }
Le nom du client qui sera utilisé 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[console]{Address  }

L'adresse d'un File Daemon Bacula est un nom d'hôte, un nom pleinement qualifié 
ou une adresse réseau au format quatre octets pointés. Cette directive est requise.

\item [FD Port = \lt{}port-number\gt{}]
   \index[console]{FD Port  }
Où le port est le numéro de port auquel le le File Daemon peut être contacté. 
La valeur par défaut est 9102.


\item [Catalog = \lt{}Catalog-resource-name\gt{}]
   \index[console]{Catalog  }
Cette directive spécifie le nom de la ressource catalog à utiliser pour ce 
client. Cette directive est requise.

\item [Password = \lt{}password\gt{}]
   \index[console]{Password  }
Il s'agit ici du mot de passe à utiliser lors de la connection avec le 
File Daemon, aussi le fichier de configuration de la machine à sauvegarder 
doit définir le même mot de passe pour être connecté par ce Director. 
Cette directive est requise. Si vous disposez de {\bf /dev/random} ou de {\bf bc} 
sur votre machine, Bacula génère des mots de passe aléatoires lors du processus 
de configuration. Dans le cas contraire, le mot de passe est laissé blanc.

\label{FileRetention}

\item [File Retention = \lt{}time-period-specification\gt{}  ]
   \index[fd]{File Retention  }
   The File Retention directive defines the length of time that  Bacula will keep
File records in the Catalog database.  When this time period expires, and if
{\bf AutoPrune} is set to  {\bf yes} Bacula will prune (remove) File records
that  are older than the specified File Retention period. Note, this  affects
only records in the catalog database. It does not  effect your archive
backups.  

File records  may actually be retained for a shorter period than you specify
on  this directive if you specify either a shorter {\bf Job Retention}  or
shorter {\bf Volume Retention} period. The shortest  retention period of the
three takes precedence.  The time may be expressed in seconds, minutes, 
hours, days, weeks, months, quarters, or years. See the 
\ilink{ Configuration chapter}{Time} of this  manual for
additional details of time specification. 

The  default is 60 days. 
\label{JobRetention}

\item [Job Retention = \lt{}time-period-specification\gt{}  ]
   \index[fd]{Job Retention  }
   The Job Retention directive defines the length of time that  Bacula will keep
Job records in the Catalog database.  When this time period expires, and if
{\bf AutoPrune} is set to  {\bf yes} Bacula will prune (remove) Job records
that are  older than the specified File Retention period. As with the other 
retention periods, this affects only records in the catalog and  not data in
your archive backup.  

If a Job  record is selected for pruning, all associated File and JobMedia 
records will also be pruned regardless of the File Retention  period set. As a
consequence, you normally will set the File  retention period to be less than
the Job retention period. The  Job retention period can actually be less than
the value you  specify here if you set the {\bf Volume Retention} directive in
the  Pool resource to a smaller duration. This is because the Job  retention
period and the Volume retention period are  independently applied, so the
smaller of the two takes  precedence.  

The Job retention period is specified as seconds,  minutes, hours, days,
weeks, months,  quarters, or years.  See the 
\ilink{ Configuration chapter}{Time} of this manual for
additional details of  time specification.  

The default is 180 days.  
\label{AutoPrune}

\item [AutoPrune = \lt{}yes|no\gt{}]
   \index[fd]{AutoPrune  }
   If AutoPrune is set to  {\bf yes} (default), Bacula (version 1.20 or greater)
will  automatically apply the File retention period and the Job  retention
period for the Client at the end of the Job.  If you set {\bf AutoPrune = no},
pruning will not be done,  and your Catalog will grow in size each time you
run a Job.  Pruning affects only information in the catalog and not data 
stored in the backup archives (on Volumes).  

\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
   \index[fd]{Maximum Concurrent Jobs  }
   where \lt{}number\gt{}  is the maximum number of Jobs with the current Client
that  can run concurrently. Note, this directive limits only Jobs  for Clients
with the same name as the resource in which it appears. Any  other
restrictions on the maximum concurrent jobs such as in  the Director, Job, or
Storage resources will also apply in addition to  any limit specified here.
The  default is set to 1, but you may set it to a larger number.  We strongly
recommend that you read the WARNING documented under  
\ilink{ Maximum Concurrent Jobs}{DirMaxConJobs} in the Director's
resource.  

\item [*Priority = \lt{}number\gt{}]
   \index[fd]{*Priority  }
   The number specifies the  priority of this client relative to other clients
that the  Director is processing simultaneously. The priority can range  from
1 to 1000. The clients are ordered such that the smaller  number priorities
are performed first (not currently  implemented). 
\end{description}

The following is an example of a valid Client resource definition: 

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

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

The Storage resource defines which Storage daemons are available for use by
the Director. 

\begin{description}

\item [Storage]
   \index[fd]{Storage }
   Start of the Storage resources. At least one  storage resource must be
specified. 

\item [Name = \lt{}name\gt{}]
   \index[sd]{Name  }
   The name of the storage resource. This  name appears on the Storage directive
specified in the Job directive and  is required. 

\item [Address = \lt{}address\gt{}]
   \index[sd]{Address  }
   Where the address is a host name,  a {\bf fully qualified domain name}, or an
{\bf IP address}. Please note  that the \lt{}address\gt{} as specified here
will be transmitted to  the File daemon who will then use it to contact the
Storage daemon. Hence,  it is {\bf not}, a good idea to use {\bf localhost} as
the  name but rather a fully qualified machine name or an IP address.  This
directive is required. 

\item [SD Port = \lt{}port\gt{}]
   \index[sd]{SD Port  }
   Where port is the port to use to  contact the storage daemon for information
and to start jobs.  This same port number must appear in the Storage resource
of the  Storage daemon's configuration file. The default is 9103. 

\item [Password = \lt{}password\gt{}]
   \index[sd]{Password  }
   This is the password to be used  when establishing a connection with the
Storage services. This  same password also must appear in the Director
resource of the Storage  daemon's configuration file. This directive is
required.  If you have either {\bf /dev/random}  {\bf bc} on your machine,
Bacula will generate a random  password during the configuration process,
otherwise it will  be left blank. 

\item [Device = \lt{}device-name\gt{}]
   \index[sd]{Device  }
   This directive specifies the name  of the device to be used to for the
storage. This name is not the  physical device name, but the logical device
name as defined on the  {\bf Name} directive contained in the {\bf Device}
resource  definition of the {\bf Storage daemon} configuration file.  You can
specify any name you would like (even the device name if  you prefer) up to a
maximum of 127 characters in length.  The physical device name associated with
this device is specified in  the {\bf Storage daemon} configuration file (as
{\bf Archive  Device}). Please take care not to define two different  Storage
resource directives in the Director that point to the  same Device in the
Storage daemon. Doing so may cause the  Storage daemon to block (or hang)
attempting to open the  same device that is already open. This directive is
required. 

\item [Media Type = \lt{}MediaType\gt{}]
   \index[fd]{Media Type  }
   This directive specifies the  Media Type to be used to store the data. This is
an arbitrary  string of characters up to 127 maximum that you define. It can 
be anything you want. However, it is best to  make it descriptive of the
storage media (e.g. File, DAT, ''HP  DLT8000``, 8mm, ...). In addition, it is
essential that you  make the {\bf Media Type} specification unique for each
storage  media type. If you have two DDS-4 drives that have incompatible 
formats, or if you have a DDS-4 drive and a DDS-4 autochanger,  you almost
certainly should specify different {\bf Media Types}.  During a restore,
assuming a {\bf DDS-4} Media Type is associated  with the Job, Bacula can
decide to use any Storage  daemon that support Media Type {\bf DDS-4} and on
any drive  supports it. If you want to tie Bacula to using a single Storage 
daemon or drive, you must specify a unique Media Type for that drive.  This is
an important point that should be carefully understood. You  can find more on
this subject in the 
\ilink{Basic Volume Management}{_ChapterStart39} chapter of this
manual.  

The {\bf MediaType} specified here, {\bf must}  correspond to the {\bf Media
Type} specified in the {\bf Device}  resource of the {\bf Storage daemon}
configuration file.  This directive is required, and it is used by the
Director and the  Storage daemon to ensure that a Volume automatically
selected from  the Pool corresponds to the physical device. If a Storage
daemon  handles multiple devices (e.g. will write to various file Volumes  on
different partitions), this directive allows you to specify exactly  which
device.  

As mentioned above, the value specified in the Director's Storage  resource
must agree with the value specified in the Device resource in  the {\bf
Storage daemon's} configuration file. It is also an  additional check so  that
you don't try to write data for a DLT onto an 8mm device. 
\label{Autochanger1}

\item [Autochanger = \lt{}yes|no\gt{}  ]
   \index[fd]{Autochanger  }
   If you specify {\bf yes}  for this command (the default is {\bf no}), when you
use the {\bf label}  command or the {\bf add} command to create a new Volume,
{\bf Bacula}  will also request the Autochanger Slot number. This simplifies 
creating database entries for Volumes in an autochanger. If you forget  to
specify the Slot, the autochanger will not be used. However, you  may modify
the Slot associated with a Volume at any time  by using the {\bf update
volume} command in the console program.  When {\bf autochanger} is enabled,
the algorithm used by  Bacula to search for available volumes will be modified
to  consider only Volumes that are known to be in the autochanger's  magazine.
If no {\bf in changer} volume is found, Bacula will  attempt recycling,
pruning, ..., and if still no volume is found,  Bacula will search for any
volume whether or not in the magazine.  By privileging in changer volumes,
this procedure minimizes  operator intervention.  The default is {\bf no}.  

For the autochanger to be  used, you must also specify {\bf Autochanger = yes}
in the  
\ilink{Device Resource}{Autochanger}  in the Storage daemon's
configuration file as well as other  important Storage daemon configuration
information.  Please consult the 
\ilink{ Using Autochangers}{_ChapterStart18} manual of this
chapter for the details of  using autochangers. 

\item [Maximum Concurrent Jobs = \lt{}number\gt{}]
   \index[fd]{Maximum Concurrent Jobs  }
   where \lt{}number\gt{}  is the maximum number of Jobs with the current Storage
resource that  can run concurrently. Note, this directive limits only Jobs 
for Jobs using this Storage daemon. Any  other restrictions on the maximum
concurrent jobs such as in  the Director, Job, or Client resources will also
apply in addition to  any limit specified here. The  default is set to 1, but
you may set it to a larger number.  We strongly recommend that you read the
WARNING documented under  
\ilink{ Maximum Concurrent Jobs}{DirMaxConJobs} in the Director's
resource.  

While it is possible to set the Director's, Job's, or Client's  maximum
concurrent jobs greater than one, you should take great  care in setting the
Storage daemon's greater than one. By keeping  this directive set to one, you
will avoid having two jobs simultaneously  write to the same Volume. Although
this is supported, it is not  currently recommended.  
\end{description}

The following is an example of a valid Storage resource definition: 

\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*{The Pool Resource}
\label{PoolResource}
\index[general]{Resource!Pool }
\index[general]{Pool Resource }
\addcontentsline{toc}{subsection}{Pool Resource}

The Pool resource defines the set of storage Volumes (tapes or files) to be
used by Bacula to write the data. By configuring different Pools, you can
determine which set of Volumes (media) receives the backup data. This permits,
for example, to store all full backup data on one set of Volumes and all
incremental backups on another set of Volumes. Alternatively, you could assign
a different set of Volumes to each machine that you backup. This is most
easily done by defining multiple Pools. 

Another important aspect of a Pool is that it contains the default attributes
(Maximum Jobs, Retention Period, Recycle flag, ...) that will be given to a
Volume when it is created. This avoids the need for you to answer a large
number of questions when labeling a new Volume. Each of these attributes can
later be changed on a Volume by Volume basis using the {\bf update} command in
the console program. Note that you must explicitly specify which Pool Bacula
is to use with each Job. Bacula will not automatically search for the correct
Pool. 

Most often in Bacula installations all backups for all machines (Clients) go
to a single set of Volumes. In this case, you will probably only use the {\bf
Default} Pool. If your backup strategy calls for you to mount a different tape
each day, you will probably want to define a separate Pool for each day. For
more information on this subject, please see the 
\ilink{Backup Strategies}{_ChapterStart3} chapter of this
manual. 

To use a Pool, there are three distinct steps. First the Pool must be defined
in the Director's configuration file. Then the Pool must be written to the
Catalog database. This is done automatically by the Director each time that it
starts, or alternatively can be done using the {\bf create} command in the
console program. Finally, if you change the Pool definition in the Director's
configuration file and restart Bacula, the pool will be updated alternatively
you can use the {\bf update pool} console command to refresh the database
image. It is this database image rather than the Director's resource image
that is used for the default Volume attributes. Note, for the pool to be
automatically created or updated, it must be explicitly referenced by a Job
resource. 

Next the physical media must be labeled. The labeling can either be done with
the {\bf label} command in the {\bf console} program or using the {\bf btape}
program. The preferred method is to use the {\bf label} command in the {\bf
console} program. 

Finally, you must add Volume names (and their attributes) to the Pool. For
Volumes to be used by Bacula they must be of the same {\bf Media Type} as the
archive device specified for the job (i.e. if you are going to back up to a
DLT device, the Pool must have DLT volumes defined since 8mm volumes cannot be
mounted on a DLT drive). The {\bf Media Type} has particular importance if you
are backing up to files. When running a Job, you must explicitly specify which
Pool to use. Bacula will then automatically select the next Volume to use from
the Pool, but it will ensure that the {\bf Media Type} of any Volume selected
from the Pool is identical to that required by the Storage resource you have
specified for the Job. 

If you use the {\bf label} command in the console program to label the
Volumes, they will automatically be added to the Pool, so this last step is
not normally required. 

It is also possible to add Volumes to the database without explicitly labeling
the physical volume. This is done with the {\bf add} console command. 

As previously mentioned, each time Bacula starts, it scans all the Pools
associated with each Catalog, and if the database record does not already
exist, it will be created from the Pool Resource definition. {\bf Bacula}
probably should do an {\bf update pool} if you change the Pool definition, but
currently, you must do this manually using the {\bf update pool} command in
the Console program. 

The Pool Resource defined in the Director's configuration file
(bacula-dir.conf) may contain the following directives: 

\begin{description}

\item [Pool]
   \index[dir]{Pool }
   Start of the Pool resource. There must  be at least one Pool resource defined.


\item [Name = \lt{}name\gt{}]
   \index[dir]{Name  }
   The name of the pool.  For most applications, you will use the default pool 
name {\bf Default}. This directive is required.  

\item [Number of Volumes = \lt{}number\gt{}]
   \index[dir]{Number of Volumes  }
   This directive specifies  the number of volumes (tapes or files) contained in
the pool.  Normally, it is defined and updated automatically by the  Bacula
catalog handling routines. 
\label{MaxVolumes}

\item [Maximum Volumes = \lt{}number\gt{}]
   \index[dir]{Maximum Volumes  }
   This directive specifies the  maximum number of volumes (tapes or files)
contained in the pool.  This directive is optional, if omitted or set to zero,
any number  of volumes will be permitted. In general, this directive is useful
for Autochangers where there is a fixed number of Volumes, or  for File
storage where you wish to ensure that the backups made to  disk files do not
become too numerous or consume too much space.  

\item [Pool Type = \lt{}type\gt{}]
   \index[dir]{Pool Type  }
   This directive defines the pool  type, which corresponds to the type of Job
being run. It is  required and may be one of the following:  

\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  }
   This directive  if set to {\bf yes} specifies that each volume is to be  used
only once. This is most useful when the Media is a  file and you want a new
file for each backup that is  done. The default is {\bf no} (i.e. use volume
any  number of times). This directive will most likely be phased out 
(deprecated), so you are recommended to use {\bf Maximum Volume Jobs = 1} 
instead.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  

\item [Maximum Volume Jobs = \lt{}positive-integer\gt{}]
   \index[fd]{Maximum Volume Jobs  }
   This directive specifies  the maximum number of Jobs that can be written to
the Volume. If  you specify zero (the default), there is no limit. Otherwise, 
when the number of Jobs backed up to the Volume equals {\bf positive-integer} 
the Volume will be marked {\bf Used}. When the Volume is marked  {\bf Used} it
can no longer be used for appending Jobs, much like  the {\bf Full} status but
it can be recycled if recycling is enabled.  By setting {\bf
MaximumVolumeJobs} to one, you get the same  effect as setting {\bf
UseVolumeOnce = yes}.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  

\item [Maximum Volume Files = \lt{}positive-integer\gt{}]
   \index[fd]{Maximum Volume Files  }
   This directive specifies  the maximum number of files that can be written to
the Volume. If  you specify zero (the default), there is no limit. Otherwise, 
when the number of files written to the Volume equals {\bf positive-integer} 
the Volume will be marked {\bf Used}. When the Volume is marked  {\bf Used} it
can no longer be used for appending Jobs, much like  the {\bf Full} status but
it can be recycled if recycling is enabled.  This value is checked and the
{\bf Used} status is set only  at the end of a job that writes to the
particular volume.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  

\item [Maximum Volume Bytes = \lt{}size\gt{}]
   \index[fd]{Maximum Volume Bytes  }
   This directive specifies  the maximum number of bytes that can be written to
the Volume. If  you specify zero (the default), there is no limit except the 
physical size of the Volume. Otherwise,  when the number of bytes written to
the Volume equals {\bf size}  the Volume will be marked {\bf Used}. When the
Volume is marked  {\bf Used} it can no longer be used for appending Jobs, much
like  the {\bf Full} status but it can be recycled if recycling is enabled. 
This value is checked and the {\bf Used} status set while  the job is writing
to the particular volume.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  

\item [Volume Use Duration = \lt{}time-period-specification\gt{}]
   \index[fd]{Volume Use Duration  }
   The Volume Use Duration directive defines the time period that  the Volume can
be written beginning from the time of first data  write to the Volume. If the
time-period specified is zero (the  default), the Volume can be written
indefinitely. Otherwise,  when the time period from the first write to the
volume (the  first Job written) exceeds the time-period-specification, the 
Volume will be marked {\bf Used}, which means that no more  Jobs can be
appended to the Volume, but it may be recycled if  recycling is enabled.  

You might use this directive, for example, if you have a Volume  used for
Incremental backups, and Volumes used for Weekly Full  backups. Once the Full
backup is done, you will want to use a  different Incremental Volume. This can
be accomplished by setting  the Volume Use Duration for the Incremental Volume
to six days.  I.e. it will be used for the 6 days following a Full save, then 
a different Incremental volume will be used.  

This value is checked and the {\bf Used} status is set only  at the end of a
job that writes to the particular volume, which  means that even though the
use duration may have expired, the  catalog entry will not be updated until
the next job that  uses this volume is run.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  

\item [Catalog Files = \lt{}yes|no\gt{}]
   \index[fd]{Catalog Files  }
   This directive  defines whether or not you want the names of the files  that
were saved to be put into the catalog. The default  is {\bf yes}. The
advantage of specifying {\bf Catalog Files = No}  is that you will have a
significantly smaller Catalog database. The  disadvantage is that you will not
be able to produce a Catalog listing  of the files backed up for each Job
(this is often called Browsing).  Also, without the File entries in the
catalog, you will not be  able to use the Console {\bf restore} command nor
any other  command that references File entries.  
\label{PoolAutoPrune}

\item [AutoPrune = \lt{}yes|no\gt{}]
   \index[fd]{AutoPrune  }
   If AutoPrune is set to  {\bf yes} (default), Bacula (version 1.20 or greater)
will  automatically apply the Volume Retention period when new Volume  is
needed and no appendable Volumes exist in the Pool. Volume  pruning causes
expired Jobs (older than the {\bf Volume  Retention} period) to be deleted
from the Catalog and permits  possible recycling of the Volume.  
\label{VolRetention}

\item [Volume Retention = \lt{}time-period-specification\gt{}]
   \index[fd]{Volume Retention  }
   The  Volume Retention directive defines the length of time that {\bf Bacula} 
will keep Job records associated with the Volume in the Catalog  database.
When this time period expires, and if {\bf AutoPrune}  is set to {\bf yes}
Bacula will prune (remove) Job  records that are older than the specified
Volume Retention period.  All File records associated with pruned Jobs are
also pruned.  The time may be specified as seconds,  minutes, hours, days,
weeks, months, quarters, or years.  The {\bf Volume Retention} applied
independently to the  {\bf Job Retention} and the {\bf File Retention} periods
defined in the Client resource. This means that the shorter  period is the
one that applies. Note, that when the  {\bf Volume Retention} period has been
reached, it will  prune both the Job and the File records.  

The default is 365 days. Note, this directive sets the default  value for each
Volume entry in the Catalog when the Volume is  created. The value in the 
catalog may be later individually changed for each Volume using  the Console
program.  

By defining multiple Pools with different Volume Retention periods,  you may
effectively have a set of tapes that is recycled weekly,  another Pool of
tapes that is recycled monthly and so on. However,  one must keep in mind that
if your {\bf Volume Retention} period  is too short, it may prune the last
valid Full backup, and hence  until the next Full backup is done, you will not
have a complete  backup of your system, and in addition, the next Incremental 
or Differential backup will be promoted to a Full backup. As  a consequence,
the minimum {\bf Volume Retention} period should be at  twice the interval of
your Full backups. This means that if you  do a Full backup once a month, the
minimum Volume retention  period should be two months.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  
\label{PoolRecycle}

\item [Recycle = \lt{}yes|no\gt{}]
   \index[fd]{Recycle  }
   This directive specifies the  default for recycling Purged Volumes. If it is
set to {\bf yes}  and Bacula needs a volume but finds none that are 
appendable, it will search for Purged Volumes (i.e. volumes  with all the Jobs
and Files expired and thus deleted from  the Catalog). If the Volume is
recycled, all previous data  written to that Volume will be overwritten.  

Please note that the value defined by this directive in the  bacula-dir.conf
file is the default value used when a Volume  is created. Once the volume is
created, changing the value  in the bacula-dir.conf file will not change what
is stored  for the Volume. To change the value for an existing Volume  you
must use the {\bf update} command in the Console.  
\label{RecycleOldest}

\item [Recycle Oldest Volume = \lt{}yes|no\gt{}]
   \index[fd]{Recycle Oldest Volume  }
   This directive  instructs the Director to search for the oldest used  Volume
in the Pool when another Volume is requested by  the Storage daemon and none
are available.  The catalog is then {\bf pruned} respecting the retention 
periods of all Files and Jobs written to this Volume.  If all Jobs are pruned
(i.e. the volume is Purged), then  the Volume is recycled and will be used as
the next  Volume to be written. This directive respects any Job,  File, or
Volume retention periods that you may have specified,  and as such it is {\bf
much} better to use this directive  than the Purge Oldest Volume.  

This directive can be useful if you have  a fixed number of Volumes in the
Pool and you want to  cycle through them and you have specified the correct 
retention periods.  
\label{RecycleCurrent}

\item [Recycle Current Volume = \lt{}yes|no\gt{}]
   \index[fd]{Recycle Current Volume  }
   If  Bacula needs a new Volume, this directive instructs Bacula  to Prune the
volume respecting the Job and File  retention periods.  If all Jobs are pruned
(i.e. the volume is Purged), then  the Volume is recycled and will be used as
the next  Volume to be written. This directive respects any Job,  File, or
Volume retention periods that you may have specified,  and thus it is {\bf
much} better to use it rather  than the Purge Oldest Volume directive.  

This directive can be useful if you have:  a fixed number of Volumes in the
Pool, you want to  cycle through them, and you have specified  retention
periods that prune Volumes before  you have cycled through the Volume in the
Pool.  
\label{PurgeOldest}

\item [Purge Oldest Volume = \lt{}yes|no\gt{}]
   \index[fd]{Purge Oldest Volume  }
   This directive  instructs the Director to search for the oldest used  Volume
in the Pool when another Volume is requested by  the Storage daemon and none
are available.  The catalog is then {\bf purged} irrespective of retention 
periods of all Files and Jobs written to this Volume.  The Volume is then
recycled and will be used as the next  Volume to be written. This directive
overrides any Job,  File, or Volume retention periods that you may have
specified.  

This directive can be useful if you have  a fixed number of Volumes in the
Pool and you want to  cycle through them and when all Volumes are full, but
you don't  want to worry about setting proper retention periods. However,  by
using this option you risk losing valuable data.  

{\bf Please be aware that {\bf Purge Oldest Volume} disregards  all retention
periods.} If you have only a single Volume  defined and you turn this variable
on, that Volume will always  be immediately overwritten when it fills! So at a
minimum,  ensure that you have a decent number of Volumes in your Pool  before
running any jobs. If you want retention periods to apply  do not use this
directive. To specify a retention period,  use the {\bf Volume Retention}
directive (see above).  

I highly recommend against using this directive, because it is  sure that some
day, Bacula will recycle a Volume that contains  current data. 

\item [Accept Any Volume = \lt{}yes|no\gt{}]
   \index[fd]{Accept Any Volume  }
   This directive  specifies whether or not any volume from the Pool may  be used
for backup. The default is {\bf yes} as of version  1.27 and later. If it is
{\bf no} then only the first  writable volume in the Pool will be accepted for
writing backup  data, thus Bacula will fill each Volume sequentially  in turn
before using any other appendable volume in the  Pool. If this is {\bf no} and
you mount a volume out  of order, Bacula will not accept it. If this  is {\bf
yes} any appendable volume from the pool  mounted will be accepted.  

If your tape backup procedure dictates that you manually  mount the next
volume, you will almost certainly want to be  sure this directive is turned
on.  

If you are going on vacation and you think the current volume  may not have
enough room on it, you can simply label a new tape  and leave it in the drive,
and assuming that {\bf Accept Any Volume}  is {\bf yes} Bacula will begin
writing on it. When you return  from vacation, simply remount the last tape,
and Bacula will  continue writing on it until it is full. Then you can remount
 your vacation tape and Bacula will fill it in turn.  

\item [Cleaning Prefix = \lt{}string\gt{}]
   \index[fd]{Cleaning Prefix  }
   This directive defines  a prefix string, which if it matches the beginning of 
a Volume name during labeling of a Volume, the Volume  will be defined with
the VolStatus set to {\bf Cleaning} and  thus Bacula will never attempt to use
this tape. This  is primarily for use with autochangers that accept barcodes 
where the convention is that barcodes beginning with {\bf CLN}  are treated as
cleaning tapes.  
\label{Label}

\item [Label Format = \lt{}format\gt{}]
   \index[fd]{Label Format  }
   This directive specifies the  format of the labels contained in this pool. The
format directive  is used as a sort of template to create new Volume names
during  automatic Volume labeling.  

The {\bf format} should be specified in double quotes, and  consists of
letters, numbers and the special characters  hyphen ({\bf -}), underscore
({\bf \_}), colon ({\bf :}), and  period ({\bf .}), which are the legal
characters for a Volume  name. The {\bf format} should be enclosed in  double
quotes ('').  

In addition, the format may contain a number of variable expansion  characters
which will be expanded by a complex algorithm allowing  you to create Volume
names of many different formats. In all  cases, the expansion process must
resolve to the set of characters  noted above that are legal Volume names.
Generally, these  variable expansion characters begin with a dollar sign ({\bf
\$})  or a left bracket ({\bf [}). If you specify variable expansion 
characters, you should always enclose the format with double  quote characters
({\bf ``}). For more details on variable expansion,  please see the 
\ilink{Variable Expansion}{_ChapterStart50} Chapter of  this manual.  

If no variable expansion characters are found in the string,  the Volume name
will be formed from the {\bf format} string  appended with the number of
volumes in the pool plus one, which  will be edited as four digits with
leading zeros. For example,  with a {\bf Label Format = ''File-``}, the first
volumes will be  named {\bf File-0001}, {\bf File-0002}, ...  

With the exception of Job specific variables, you can test  your {\bf
LabelFormat} by using the 
\ilink{ var command}{var} the Console Chapter of this manual.  

In almost all cases, you should enclose the format specification  (part after
the equal sign) in double quotes.  
\end{description}

In order for a Pool to be used during a Backup Job, the Pool must have at
least one Volume associated with it. Volumes are created for a Pool using the
{\bf label} or the {\bf add} commands in the {\bf Bacula Console}, program. In
addition to adding Volumes to the Pool (i.e. putting the Volume names in the
Catalog database), the physical Volume must be labeled with valid Bacula
software volume label before {\bf Bacula} will accept the Volume. This will be
automatically done if you use the {\bf label} command. Bacula can
automatically label Volumes if instructed to do so, but this feature is not
yet fully implemented. 

The following is an example of a valid Pool resource definition: 

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

\subection*{The Catalog Resource}
\label{CatalogResource}
\index[general]{Resource!Catalog }
\index[general]{Catalog Resource }
\addcontentsline{toc}{subsection}{Catalog Resource}

The Catalog Resource defines what catalog to use for the current job.
Currently, Bacula can only handle a single database server (SQLite, MySQL,
built-in) that is defined when configuring {\bf Bacula}. However, there may be
as many Catalogs (databases) defined as you wish. For example, you may want
each Client to have its own Catalog database, or you may want backup jobs to
use one database and verify or restore jobs to use another database. 

\begin{description}

\item [Catalog]
   \index[console]{Catalog }
   Start of the Catalog resource.  At least one Catalog resource must be defined.


\item [Name = \lt{}name\gt{}]
   \index[console]{Name  }
   The name of the Catalog. No  necessary relation to the database server name.
This name  will be specified in the Client resource directive indicating  that
all catalog data for that Client is maintained in this  Catalog. This
directive is required.  

\item [password = \lt{}password\gt{}]
   \index[console]{password  }
   This specifies the password  to use when logging into the database. This
directive is required.  

\item [DB Name = \lt{}name\gt{}]
   \index[console]{DB Name  }
   This specifies the name of the  database. If you use multiple catalogs
(databases), you specify  which one here. If you are using an external
database server  rather than the internal one, you must specify a name that 
is known to the server (i.e. you explicitly created the  Bacula tables using
this name. This directive is  required. 

\item [user = \lt{}user\gt{}]
   \index[console]{user  }
   This specifies what user name  to use to log into the database. This directive
is required.  

\item [DB Socket = \lt{}socket-name\gt{}]
   \index[console]{DB Socket  }
   This is the name of  a socket to use on the local host to connect to the
database.  This directive is used only by MySQL and is ignored by  SQLite.
Normally, if neither {\bf DB Socket} or {\bf DB Address}  are specified, MySQL
will use the default socket.  

\item [DB Address = \lt{}address\gt{}]
   \index[console]{DB Address  }
   This is the host address  of the database server. Normally, you would specify
this instead  of {\bf DB Socket} if the database server is on another machine.
In that case, you will also specify {\bf DB Port}. This directive  is used
only by MySQL and is ignored by SQLite if provided.  This directive is
optional.  

\item [DB Port = \lt{}port\gt{}]
   \index[console]{DB Port  }
   This defines the port to  be used in conjunction with {\bf DB Address} to
access the  database if it is on another machine. This directive is used  only
by MySQL and is ignored by SQLite if provided. This  directive is optional.  

\item [Multiple Connections = \lt{}yes|no\gt{}]
   \index[console]{Multiple Connections  }
   By default, this  directive is set to no. In that case, each job that uses the
same Catalog will use a single connection to the catalog. It will  be shared,
and Bacula will allow only one Job at a time to  communicate. If you set this
directive to yes, Bacula will  permit multiple connections to the database,
and the database  must be multi-thread capable. For SQLite and PostgreSQL,
this is  no problem. For MySQL, you must be *very* careful to have the 
multi-thread version of the client library loaded on your system.  When this
directive is set yes, each Job will have a separate  connection to the
database, and the database will control the  interaction between the different
Jobs. This can significantly  speed up the database operations if you are
running multiple  simultaneous jobs. In addition, for SQLite and PostgreSQL,
Bacula  will automatically enable transactions. This can significantly  speed
up insertion of attributes in the database either for  a single Job or
multiple simultaneous Jobs.  

This directive has not been tested. Please test carefully  before running it
in production and report back your results.  
\end{description}

The following is an example of a valid Catalog resource definition: 

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

or for a Catalog on another machine: 

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

\subection*{The Messages Resource}
\label{MessagesResource2}
\index[general]{Resource!Messages }
\index[general]{Messages Resource }
\addcontentsline{toc}{subsection}{Messages Resource}

For the details of the Messages Resource, please see the 
\ilink{Messages Resource Chapter}{_ChapterStart15} of this
manual. 

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

As of Bacula version 1.33 and higher, there are three different kinds of
consoles, which the administrator or user can use to interact with the
Director. These three kinds of consoles comprise three different security
levels. 

\begin{itemize}
\item The first console type is an {\bf anonymous} or {\bf default}  console,
   which  has full privileges. There is no console resource necessary  for this
   type since the password is specified in the Director's  resource and
consequently such consoles do not have an  name as defined on a {\bf Name =}
directive. This is the kind of  console that was initially implemented in
versions prior to 1.33  and remains valid. Typically you would use it only for
 administrators.  
\item The second type of console, and new to version 1.33 and  higher is a
   ''named`` console defined within  a Console resource in both the Director's
   configuration file and in  the Console's configuration file. Both the names
and the passwords  in these two entries must match much as is the case for 
Client programs.  

This second type of console begins with absolutely no  privileges except those
explicitly specified in the Director's  Console resource. Thus you can have
multiple Consoles with  different names and passwords, sort of like multiple
users, each  with different privileges. As a  default, these consoles can do
absolutely nothing -- no commands  what so ever. You give them privileges or
rather access  to commands and resources by specifying access  control lists
in the Director's Console resource. The ACLs are  specified by a directive
followed by a list of access names.  Examples of this are shown below.  
\item The third type of console is similar to the above mentioned  one in that
   it requires a Console resource definition in both  the Director and the
   Console. In addition, if the console name,  provided on the {\bf Name =}
directive, is the same as a Client  name, that console is permitted to use the
{\bf SetIP}  command to change the Address directive in the  Director's client
resource to the IP address of the Console. This  permits portables or other
machines using DHCP (non-fixed IP addresses)  to ''notify`` the Director of
their current IP address.  
\end{itemize}

The Console resource is optional and need not be specified. The following
directives are permited within the Director's configuration resource: 

\begin{description}

\item [Name = \lt{}name\gt{}]
   \index[console]{Name  }
   The name of the console. This  name must match the name specified in the
Console's configuration  resource (much as is the case with Client
definitions).  

\item [Password = \lt{}password\gt{}]
   \index[console]{Password  }
   Specifies the password that  must be supplied for a named Bacula Console to be
authorized. The same  password must appear in the {\bf Console} resource of
the Console  configuration file. For added security, the password is never 
actually passed across the network but rather a challenge response  hash code
created with the password. This directive is required.  If you have either
{\bf /dev/random}  {\bf bc} on your machine, Bacula will generate a random 
password during the configuration process, otherwise it will  be left blank. 

\item [JobACL = \lt{}name-list\gt{}]
   \index[console]{JobACL  }
   This directive is used to  specify a list of Job resource names that can be
accessed by  the console. Without this directive, the console cannot access 
any of the Director's Job resources. Multiple Job resource names  may be
specified by separating them with commas, and/or by specifying  multiple
JobACL directives. For example, the directive  may be specified as:  

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

With the above specification, the console can access the Director's  resources
for the four jobs named on the JobACL directives,  but for no others.  

\item [ClientACL = \lt{}name-list\gt{}]
   \index[console]{ClientACL  }
   This directive is used to  specify a list of Client resource names that can be
accessed by  the console.  

\item [StorageACL = \lt{}name-list\gt{}]
   \index[console]{StorageACL  }
   This directive is used to  specify a list of Storage resource names that can
be accessed by  the console.  

\item [ScheduleACL = \lt{}name-list\gt{}]
   \index[console]{ScheduleACL  }
   This directive is used to  specify a list of Schedule resource names that can
be accessed by  the console.  

\item [PoolACL = \lt{}name-list\gt{}]
   \index[console]{PoolACL  }
   This directive is used to  specify a list of Pool resource names that can be
accessed by  the console.  

\item [FileSetACL = \lt{}name-list\gt{}]
   \index[console]{FileSetACL  }
   This directive is used to  specify a list of FileSet resource names that can
be accessed by  the console.  

\item [CatalogACL = \lt{}name-list\gt{}]
   \index[console]{CatalogACL  }
   This directive is used to  specify a list of Catalog resource names that can
be accessed by  the console.  

\item [CommandACL = \lt{}name-list\gt{}]
   \index[console]{CommandACL  }
   This directive is used to  specify a list of of console commands that can be
executed by  the console. 
\end{description}

Aside from Director resource names and console command names, the special
keyword {\bf *all*} can be specified in any of the above access control lists.
When this keyword is present, any resource or command name (which ever is
appropriate) will be accepted. For an example configuration file, please see
the 
\ilink{Console Configuration}{_ChapterStart36} chapter of this
manual. 

\subsection*{The Counter Resource}
\label{CounterResource}
\index[general]{Resource!Counter }
\index[general]{Counter Resource }
\addcontentsline{toc}{subsection}{Counter Resource}

The Counter Resource defines a counter variable that can be accessed by
variable expansion used for creating Volume labels with the {\bf LabelFormat}
directive. See the 
\ilink{LabelFormat}{Label} directive in this chapter for more
details. 

\begin{description}

\item [Counter]
   \index[console]{Counter }
   Start of the Counter resource.  Counter directives are optional. 

\item [Name = \lt{}name\gt{}]
   \index[console]{Name  }
   The name of the Counter.  This is the name you will use in the variable
expansion  to reference the counter value.  

\item [Minimum = \lt{}integer\gt{}]
   \index[console]{Minimum  }
   This specifies the minimum  value that the counter can have. It also becomes
the default.  If not supplied, zero is assumed.  

\item [Maximum = \lt{}integer\gt{}]
   \index[console]{Maximum  }
   This is the maximum value  value that the counter can have. If not specified
or set to  zero, the counter can have a maximum value of 2,147,483,648  (2 to
the 31 power). When the counter is incremented past  this value, it is reset
to the Minimum.  

\item [*WrapCounter = \lt{}counter-name\gt{}]
   \index[console]{*WrapCounter  }
   If this value  is specified, when the counter is incremented past the maximum 
and thus reset to the minimum, the counter specified on the  {\bf WrapCounter}
is incremented. (This is not currently  implemented). 

\item [Catalog = \lt{}catalog-name\gt{}]
   \index[console]{Catalog  }
   If this directive is  specified, the counter and its values will be saved in 
the specified catalog. If this directive is not present, the  counter will be
redefined each time that Bacula is started. 
\end{description}

\subsection*{ A Complete Example Director Configuration File}
\label{SampleDirectorConfiguration}
\index[general]{File!Complete Example Director Configuration }
\index[general]{Complete Example Director Configuration File }
\addcontentsline{toc}{subsection}{Complete Example Director Configuration File}

An example Director configuration file might be the following: 

\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 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
