%%
%%

\chapter{La console Bacula}
\label{_ConsoleChapter}
\index[general]{Console!Bacula}
\index[general]{La console Bacula}
\index[general]{Console!Bacula}
\index[general]{LA console Bacula}
\addcontentsline{toc}{section}{La console Bacula}

\section{G\'en\'eralit\'es}
\index[general]{G\'en\'eralit\'es}
\addcontentsline{toc}{section}{G\'en\'eralit\'es}

La {\bf console Bacula} (parfois d\'esign\'ee "Agent utilisateur") est un programme 
qui permet \`a l'utilisateur autoris\'e ou \`a l'administrateur syst\`eme d'interagir 
avec le Director. 

Actuellement, la console Bacula existe en deux versions : une interface shell 
(fa\c{c}on TTY), et une interface graphique GNOME. Avec la console Bacula, vous 
pouvez d\'eterminer l'\'etat d'un job particulier, examiner le contenu du 
catalogue et effectuer certaines manipulations de cartouches.

Il existe d'autre part un programme nomm\'e bwx-console, b\^atie avec wxWidgets qui 
offre une interface graphique aux op\'erations de restauration.

Etant donn\'e que la Console interagit avec le Director au travers du r\'eseau, 
il n'est pas n\'ecessaire que les deux programmes r\'esident sur la m\^eme machine.

Bacula a besoin d'un minimum de retour de la Console afin de pouvoir utiliser plus 
d'une cartouche. En effet, lorsqu'il en r\'eclame une nouvelle, il attend jusqu'\`a 
ce qu'un op\'erateur lui indique, via la Console, qu'une nouvelle cartouche est mont\'ee.

\section{Configuration de la Console}
\index[general]{Configuration de la Console}
\index[general]{Configuration!Console}
\index[general]{Configuration de la Console}
\index[general]{Configuration!Console}
\addcontentsline{toc}{section}{Configuration de la Console}

Lors de son lancement, la Console lit le fichier de configuration standard 
nomm\'e {\bf bconsole.conf} (ou {\bf gnome-console.conf} dans le cas de la version 
GNOME) Ce fichier d\'efinit une configuration par d\'efaut de la Console et, \`a l'heure 
actuelle, la seule ressource d\'efinie est la ressource Director, qui informe 
la Console du nom et de l'adresse du Director. Pour plus d'informations sur la 
configuration de la Console, voyez le chapitre \ilink{Configurer la Console}{_ChapterStart36} 
de ce manuel.

\section{Utiliser la Console}
\index[general]{Utiliser la Console}
\index[general]{Console!Utiliser la}
\index[general]{Utiliser la Console}
\index[general]{Console!Utiliser la}
\addcontentsline{toc}{section}{Utiliser la Console}

Le programme Console admet les options suivantes :
\footnotesize
\begin{verbatim}
Usage: bconsole [-s] [-c config_file] [-d debug_level]
       -c <file>   set configuration file to file
       -dnn        set debug level to nn
       -n          no conio
       -s          no signals
       -t          test - read configuration and exit
       -?          print this message.
\end{verbatim}
\normalsize

Apr\`es son d\'emarrage, la Console est en attente de vos commandes, ce qui 
est indiqu\'e par une ast\'erisque (*) (ce n'est pas le cas dans la version 
GNOME o\`u vous saisissez vos commandes dans la boite texte en bas de l'\'ecran). 
Vous pouvez, pour toutes les commandes, vous contenter d'entrer le nom de la 
commande, la Console se chargera de vous demander les arguments n\'ecessaires, 
mais dans la plupart des cas, vous pouvez entrer les commandes suivies de leurs 
arguments. Le format g\'en\'eral est :

\footnotesize
\begin{verbatim}
 <command> <keyword1>[=<argument1>] <keyword2>[=<argument2>] ...
\end{verbatim}
\normalsize

O\`u {\bf command} est l'une des commandes \'enum\'er\'ees ci-dessous, {\bf keyword} 
est l'un des mots-clef \'enum\'er\'es ci-dessous (usuellement suivi d'un argument), 
et {\bf argument} est la valeur du mot-clef. La commande peut \^etre abr\'eg\'ee 
jusqu'\`a sa plus courte abr\'eviation unique. Si deux commandes commencent 
par les m\^emes lettres, c'est celle qui appara\^it en t\^ete dans la liste fournie 
par la commande {\bf help} qui sera s\'electionn\'ee si votre abr\'eviation est 
ambig\"ue. Aucun des mots-clef suivant la commande ne peut \^etre abr\'eg\'e.

Par exemple :

\footnotesize
\begin{verbatim}
list files jobid=23
\end{verbatim}
\normalsize

\'enum\`ere les fichiers sauvegard\'es par le job de JobId 23. 

Cette autre commande :

\footnotesize
\begin{verbatim}
show pools
\end{verbatim}
\normalsize

affiche toutes les ressources Pool.

\section{Quitter la Console}
\index[general]{Console!Quitter}
\index[general]{Quitter la Console}
\index[general]{Console!Quitter}
\index[general]{Quitter la Console}
\addcontentsline{toc}{section}{Quitter la Console}

Normalement, le programme Console se termine si vous saisissez  {\bf quit} 
ou {\bf exit}. Cependant, il il attend jusq"\`a ce que le Director ait pris 
en compte la commande, ce qui peut prendre du temps si ce dernier est d\'ej\`a 
occup\'e \`a une t\^ache longue (par exemple, un \'elagage du catalogue). Si vous voulez 
quitter la Console imm\'ediatement, utilisez la commande {\bf .quit}.

Il n'existe actuellement aucun moyen d'interrompre une commande de la Console 
une fois lanc\'ee (Ctrl-C ne marche pas). En revanche, \`a l'invite d'une commande 
vous demandant de choisir parmi plusieurs possibilit\'es, vous pouvez annuler 
la commande en entrant un point ({\bf .}), vous serez dans la plupart des cas 
ramen\'e \`a l'invite principal, ou \`a l'invite pr\'ec\'edente, dans le cas de choix 
imbriqu\'es. En quelques endroits, comme celui o\`u l'on vous demande un 
nom de volume, le point sera pris pour la r\'eponse (Bacula pensera que vous 
voulez nommer votre volume "."). Dans cette situation, vous serez la plupart 
du temps en mesure d'annuler \`a l'invite suivante.

\label{keywords}
\section{Index des mots-clef de la Console}
\index[general]{Mots-clef!Index Console}
\index[general]{Index des mots-clef de la Console}
\index[general]{Mots-clef!Index Console}
\index[general]{Index des mots-clef de la Console}
\addcontentsline{toc}{section}{Index des mots-clef de la Console}
Sauf sp\'ecification contraire, chacun des mots-clef suivant admet un argument, 
qui est sp\'ecifi\'e apr\`es le mot-clef suivi du signe \'egale. Par exemple :

\begin{verbatim}
jobid=536
\end{verbatim}

Notez que cette liste est probablement incompl\`ete, car le processus de cr\'eation 
est toujours en cours. Il se peut aussi qu'elle ne soit pas dans l'ordre 
alphab\'etique.

\begin{description}
\item [restart]
 Permis dans la commande {\it python}, provoque le red\'emarrage de 
 l'interpr\'eteur Python. Ne prend pas d'arguments.
\item [all]
  Permis dans les commandes {\it status} et {\it show} pour sp\'ecifier, respectivement,  tous les 
  composants ou toutes les ressources.
\item [before]
  Utilis\'e dans la commande {\it restore}.
\item [bootstrap]
  Utilis\'e dans la commande {\it restore}.
\item [catalog]
  Permis dans la commande {\it use} pour sp\'ecifier le nom de catalogue \`a utiliser. 
\item [catalogs]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments
\item [client | fd]
\item [clients]
  Utilis\'e dans les commandes {\it show}, {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [counters]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [current]
  Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
\item [days]
  Utilisé pour définir le nombre de jours que la commande "list nextvol" doit 
  prendre en compte dans son évaluation des prochains jobs à exécuter. 
  Le mot-clef "day" peut aussi être utilisé avec la commande "status dir" 
  afin qu'elle affiche les jobs planifiés pour la période spécifiés.
\item [devices]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [dir | director]
\item [directors]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [directory]
  Utilis\'e dans la commande {\it restore}. Son argument spécifie 
  le répertoire à restaurer.
\item [enabled]
  Ce mot-clef peut être utilisé avec la commande {\bf update volume} et admet 
  l'un des arguments suivants : yes, true, no, false, archived, 0, 1, 2, où 
  0 correspond à "no" ou "false", 1 à "yes" ou "true" et 2 à "archived". Les volumes 
  avec le statut "archived" ne seront pas utilisés, pas plus que ne seront élagués leurs 
  enregistrements dans le catalogue. Les volumes qui n'ont pas le statut "enabled" 
  ne seront pas utilisés pour des sauvegardes ou des restaurations.
\item [done]
  Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
\item [file]
  Utilis\'e dans la commande {\it restore}.
\item [files]
  Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [fileset]
\item [filesets]
 Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [help]
 Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [jobs]
  Utilis\'e dans les commandes {\it show}, {\it list} et {\it llist}. Ne prend pas d'arguments.
\item [jobmedia]
  Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [jobtotals]
  Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [jobid]
  Le JobId est le num\'ero de job qui est affich\'e dans le rapport de job. 
  C'est l'index du catalogue pour le job donn\'e. Bien qu'il soit unique 
  pour tous les jobs existant dans le catalogue, le m\^eme JobId peut 
  \^etre r\'eutilis\'e une fois qu'un job a \'et\'e supprim\'e du catalogue. 
  Vous d\'esignerez certainement les jobs sp\'ecifiques par leur JobId.
\item [job | jobname]
  Le mot-clef Job ou Jobname se r\'ef\`ere au nom que vous avez sp\'ecifi\'e 
  dans la ressource Job, et donc peut d\'esigner plusieurs jobs effectu\'es. 
  C'est particuli\`erement utile lorsque vous voulez la liste des jobs 
  execut\'es portant un nom particulier.
\item [level]
\item [listing]
  Permis dans la commande {\it estimate}. Ne prend pas d'arguments.
\item [limit]
\item [messages]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [media]
 Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [nextvol | nextvolume]
  Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [on]
  Ne prend pas d'arguments.
\item [off]
  Ne prend pas d'arguments.
\item [pool]
\item [pools]
  Utilis\'e dans les commandes, {\it show}, {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [select]
  Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
\item [storages]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [schedules]
  Utilis\'e dans la commande {\it show}. Ne prend pas d'arguments.
\item [sd | store | storage]
\item [ujobid]
  L'ujobid est un identificateur unique de job qui est affich\'e dans 
  le rapport du job. Actuellement, il consiste en le nom du job 
  (celui de la directive Name de ce job) suffix\'e de la date et de 
  l'heure d'ex\'ecution du job. Ce mot-clef est utile si vous voulez 
  identifier compl\`etement l'instance du job ex\'ecut\'e.
\item [volume]
\item [volumes]
  Utilis\'e dans les commandes {\it list}, et {\it llist}. ne prend pas d'arguments.
\item [where]
  Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
\item [yes]
  Utilis\'e dans la commande {\it restore}. Ne prend pas d'arguments.
\end{description}

\label{list}
\section{Index des commandes de la Console}
\index[general]{Commandes!Index des commandes de la Console}
\index[general]{Index des commandes de la Console}
\index[general]{Commandes!Index des commandes de la Console}
\index[general]{Index des commandes de la Console}
\addcontentsline{toc}{section}{Index des commandes de la Console}

Les commandes suivantes sont actuellement impl\'ement\'ees :

\begin{description}
\item [{add [pool=\lt{}pool-name\gt{} storage=\lt{}storage\gt{}
   jobid=\lt{}JobId\gt{}]} ]
   \index[general]{add}
Cette commande sert \`a ajouter des volumes \`a un pool existant. Les noms des 
volumes saisis sont plac\'es dans le catalogue et deviennent ainsi disponibles 
pour les sauvegardes. Normalement, on pr\'ef\`er utiliser la commande {\bf label} 
qui remplit les m\^emes fonctions en plus d'apposer une \'etiquette logicielle 
(label) sur les bandes, par opposition \`a {\bf add} qui se contente de 
r\'ef\'erencer le volume dans le catalogue. Ainsi, si vous utilisez {\bf add}, 
le volume doit pr\'eexister et \^etre d\'ej\`a \'etiquet\'e. Cette commande peut 
cependant \^etre utile si vous voulez ajouter plusieurs cartouches dans un 
pool en ne les \'etiquettant que plus tard. Elle peut aussi se r\'ev\'eler utile 
si vous importez des cartouches provenant d'un autre site. Consultez le 
paragraphe sur la commande {\bf label} pour conna\^itre la liste des 
caract\`eres autoris\'es dans un nom de volume.

\item [autodisplay on/off]
   \index[general]{autodisplay on/off}
  Cette commande accepte les arguments {\bf on} ou {\bf off} et active ou 
  d\'esactive l'affichage automatique des messages. La valeur par d\'efaut dans 
  la Console est {\bf off}, ce qui signifie que les messages en attente 
  vous sont notifi\'es, mais qu'ils ne sont pas automatiquement affich\'es. 
  La valeur par d\'efaut pour la console GNOME est {\bf on}, ainsi les 
  messages sont affich\'es lorqu'ils sont re\c{c}us (habituellement dans les 5 secondes 
  apr\`es qu'ils aient \'et\'e g\'en\'er\'es).

  Lorsque l'affichage automatique est d\'esactiv\'e, vous devez explicitement 
  en demander l'affichage avec la commande {\bf messages}.

\item [automount on/off]
   \index[general]{automount on/off}
  Cette commande accepte les arguments {\bf on} ou {\bf off} et active ou
  d\'esactive le montage automatique de la cartouche apr\`es une commande {\bf label}.
  La valeur par d\'efaut est {\bf on}. Si le montage automatique est d\'esactiv\'e, 
  vous devez explicitement monter la cartouche apr\`es avoir utilis\'e {\bf label} 
  pour pouvoir \'ecrire dessus.

\item [{cancel [jobid=\lt{}number\gt{} job=\lt{}job-name\gt{} ujobid=\lt{}unique-jobid\gt{}]}]
   \index[general]{cancel jobid}
   Cette commande sert \`a supprimer un job et admet les arguments {\bf jobid=nnn} 
   ou {\bf job=xxx} o\`u nnn est \`a remplacer par le JobId et xxx par le nom de 
   job. Si vous lancez cette commande sans arguments, la Console vous propose 
   de choisir parmi les jobs actifs celui \`a supprimer. 

   Une fois qu'un job est marqu\'e "A supprimer", il peut se passer quelques instants 
   (en g\'en\'eral, moins d'une minute) avant qu'il se termine, en fonction des 
   op\'erations en cours.

\item [{ create [pool=\lt{}pool-name\gt{}]}]
   \index[general]{create pool}
   Cette commande sert \`a cr\'eer un enregistrement Pool dans le catalogue 
   selon les ressources Pool d\'efinis dans le fichier de configuration 
   du Director. En un sens, cette commande se content de transf\'erer 
   l'information depuis la ressource Pool dans le fichier de configuration 
   vers le catalogue. En principe, cete commande est automatiquement 
   ex\'ecut\'ee au lancement du Director, pourvu que le pool soit r\'ef\'erenc\'e 
   dans une ressource Job. Si vous utilisez cette commande sur un pool 
   existant, elle met \`a jour le catalogue en foction des informations de 
   la ressource Pool. Apr\`es avoir cr\'e\'e un pool, vous uiliserez 
   probablement la commande {\bf label} pour \'etiqueter un ou plusieurs 
   volumes et enregistrer leurs noms dans le catalogue.
   
   Si, au lancement d'un job, Bacula d\'etermine qu'il n'y a pas de pool 
   enregistr\'e dans le catalogue, mais qu'il existe une ressource Pool pour 
   le pool appropri\'e, alors il le cr\'e\'e pour vous. Si vous voulez le voir 
   appara\^itre imm\'ediatement dans le catalogue, utilisez cette commande pour 
   forcer sa cr\'eation imm\'ediate.

\item [{ delete [volume=\lt{}vol-name\gt{} pool=\lt{}pool-name\gt{}  job
   jobid=\lt{}id\gt{}]}]
   \index[general]{delete}
   Cette commande s'utilise pour supprimer un volume, un pool ou un job 
   du catalogue, ainsi que tous les enregistrements du catalogue qui leur 
   sont associ\'es. Cette commande op\`ere exclusivement sur le catalogue 
   et n'a aucune r\'epercussion sur les donn\'ees \'ecrites sur les cartouches. 
   Elle peut \^etre dangereuse, et nous vous recommandons fortement de ne 
   pas l'utiliser si vous ne savez pas exactement ce que vous faites.
   
   Voici la forme compl\`ete de cette commande :

\begin{verbatim}
delete pool=\lt{}pool-name\gt{}
\end{verbatim}

   supprime un pool du catalogue.

\begin{verbatim}
delete volume=\lt{}volume-name\gt{} pool=\lt{}pool-name\gt{} 
\end{verbatim}

   supprime du catalogue un volume du pool sp\'ecifi\'e.

\begin{verbatim}
delete JobId=\lt{}job-id\gt{} JobId=\lt{}job-id2\gt{} ... 
\end{verbatim}

  supprime du catalogue le job sp\'ecifi\'e.

\begin{verbatim}
delete Job JobId=n,m,o-r,t ...  
\end{verbatim}

   supprime les job de JobIds m,n,o,p,q,r et t (o\`u m,n,... sont, bien sur, des 
   nombres). Ainsi, la commande "delete jobid" accepte les listes et les plages 
   de jobids.

\item [disable job\lt{}job-name\gt{}]
  \index[general]{enable}
  Cette commande vous permet de d\'esactiver un job normalement planifi\'e 
  pour ex\'ecution. Le job peut avoir \'et\'e pr\'ealablement activ\'e par la 
  directive {\bf Enabled} dans la ressource Job, ou avec la commande 
  {\bf enable} dans la Console. Au prochain d\'emarrage du Director, ou 
  si le fichier de configuration est recharg\'e, l'\'etat Enable/Disable sera 
  r\'etabli \`a celui sp\'ecifi\'e dans la ressource Job (la valeur par d\'efaut 
  est enabled).

\item [enable job\lt{}job-name\gt{}]
  \index[general]{enable}
 Cette commande vous permet de d'activer un job  planifi\'e
  pour ex\'ecution automatique. Le job peut avoir \'et\'e pr\'ealablement d\'esactiv\'e par la
  directive {\bf Disabled} dans la ressource Job, ou avec la commande
  {\bf disable} dans la Console. Au prochain d\'emarrage du Director, ou
  si le fichier de configuration est recharg\'e, l'\'etat Enable/Disable sera
  r\'etabli \`a celui sp\'ecifi\'e dans la ressource Job (la valeur par d\'efaut
  est enabled).

\label{estimate}
\item [estimate]
   \index[general]{estimate}
   Avec cette commande, vous pouvez vous faire une id\'ee du nombre de fichier 
    seront sauvegard\'es. Vous pouvez aussi l'utiliser pour \'eprouver les 
    param\`etres Include de vos FileSets sans passer par une sauvegarde 
    r\'eelle. Par d\'efaut, l'estimation est faite pour une sauvegarde Full.
    Cependant, vous pouvez passer outre ce comportement en sp\'ecifiant 
    {\bf level=Incremental} ou {\bf level=Differential} sur la ligne de 
    commande. Un nom de job doit \^etre sp\'ecifi\'e, faute de quoi il vous sera 
    demand\'e. Optionnellement, vous pouvez sp\'ecifier un client et un 
    FileSet sur la ligne de commande. Bacula contacte alors le client 
    et calcule le nombre de fichier et d'octets qui seraient 
    sauvegard\'es. Notez qu'il s'agit d'une estimation calcul\'ee d'apr\`es 
    le nombre de blocs dans les fichiers plut\^ot qu'en lisant le nombre 
    effectif d'octets. Aussi, la taille estim\'ee est g\'en\'eralement plus 
    importante que celle de la sauvegarde r\'eelle.

    Optionnellement, vous pouvez ajouter le mot-clef {\bf listing}, auquel cas 
    tous les fichiers \`a sauvegarder seront affich\'es. Notez qu'un tel affichage 
    peut prendre un certain temps s'il s'agit d'une grosse sauvegarde.
    Voici la forme compl\`ete de cette commande :

\begin{verbatim}
estimate job=\lt{}job-name\gt{} listing client=\lt{}client-name\gt{}
       fileset=\lt{}fileset-name\gt{} level=\lt{}level-name\gt{}
\end{verbatim}

    La sp\'ecification du {\bf job} est suffisante, mais vous pouvez aussi 
    passer outre le client, le FileSet et/ou le niveau en les 
    sp\'ecifiant sur la ligne de commande.

    Par exemple, vous pourriez faire ceci : 

\footnotesize
\begin{verbatim}
     @output /tmp/listing
     estimate job=NightlySave listing level=Incremental
     @output
\end{verbatim}
\normalsize

ce qui produirait une liste compl\`ete de tous les fichiers \`a sauvegarder pour 
le job {\bf NightlySave} au cours d'une sauvegarde incr\'ementale, et qui 
consignerait cette liste dans le fichier {\bf /tmp/listing}. Notez que l'évaluation 
produite par cette commande se base sur les tailles de fichiers contenues dans 
l'objet "répertoire", aussi l'estimation peut être très éloignée de la réalité si vous 
avez des fichiers creux (NDT : sparse files) sur votre système. Ce type de fichiers se 
rencontre souvent sur les systèmes 64 bits avec certains systèmes de fichiers. 
Le volume obtenu par l'évaluation est celui que sauvegardera Bacula si l'option 
sparse est désactivée. Il n'y a actuellement aucun moyen d'évaluer le volume de 
ce qui serait sauvegardé avec l'option sparse activée.

\item [help]
   \index[general]{help}
   Cette commande affiche la liste des commandes disponibles.

\item [label]
   \index[general]{label}
   \index[general]{relabel}
   \index[general]{label}
   \index[general]{relabel}
   Cette commande est utilis\'ee pour \'etiqueter les volumes. La forme compl\`ete est :

\begin{verbatim}
  label storage=\lt{}storage-name\gt{} volume=\lt{}volume-name\gt{}
        slot=\lt{}slot\gt{}  
\end{verbatim}

   Si vous omettez l'un quelconque des arguments, il vous sera r\'eclam\'e. 
   Le type de m\'edia est automatiquement r\'ecup\'er\'e de la ressource Storage. 
   Une fois que les informations requises sont r\'eunies, la Console 
   contacte le Storage Daemon sp\'ecifi\'e et lui ordonne d'\'etiqueter la 
   cartouche sp\'ecifi\'ee. Si l'\'etiquetage s'effectue correctement, la 
   Console cr\'e\'e un nouvel enregistrement dans le catalogue pour le 
   volume dans le pool appropri\'e.

   Les noms de volumes ne doivent contenir que des lettres, chiffres et 
   les caract\`eres sp\'eciaux tiret ({\bf -}), sous-lign\'e ({\bf \_}), double-point 
   ({\bf :}), et point ({\bf .}). Tous les autres caract\`eres, y compris l'espace, 
   sont ill\'egaux. Cette restriction vise \`a assurer une bonne lisibilit\'e 
   des noms de volumes pour r\'eduire le risque d'erreurs humaines.

   Notez que lors de l'\'etiquetage d'une cartouche vierge, Bacula obtient des 
   erreurs {\bf read I/O error} lorqu'il tente de v\'erifier si la cartouche 
   a d\'ej\`a un label. Si vous voulez \'eviter ce genre de message, placez un 
   indicateur de fin de fichier sur votre cartouche avant son \'etiquetage :

\footnotesize
\begin{verbatim}
       mt rewind
       mt weof
       
\end{verbatim}
\normalsize

La commande label peut \'echouer pour plusieurs raisons :


\begin{enumerate}
\item Le nom de volume que vous avez sp\'ecifi\'e figure d\'ej\`a dans le catalogue.
\item Le Storage Daemon a d\'ej\`a une cartouche mont\'ee dans le lecteur. Dans ce cas, 
  vous devez la d\'emonter ({\bf unmount}) et ins\'erer une cartouche vierge 
  avant de lancer la commande {\bf label}.
\item La cartouche dans le lecteur porte d\'ej\`a une \'etiquette Bacula. 
  (Bacula ne r\'e-\'etiquette jamais une cartouche \`a moins qu'elle soit recycl\'ee 
  et que vous utilisiez la commande  {\bf relabel} ).
\item Il n'y a pas de cartouche dans le lecteur.
\end{enumerate}

Il existe deux moyens pour r\'e-\'etiqueter un volume qui porte d\'ej\`a une 
\'etiquette Bacula. La m\'ethode brutale consiste \`a \'ecrire une marque de fin de 
fichier sur la cartouche vec la commande du syst\`eme d'exploitation {\bf mt}, 
quelque chose dans ce style :

\footnotesize
\begin{verbatim}
       mt -f /dev/st0 rewind
       mt -f /dev/st0 weof
\end{verbatim}
\normalsize

puis d'utiliser la commande {\bf label} pour ajouter une nouvelle \'etiquette. 
Cette m\'ethode peut cependant laisser des traces de l'ancien volume dans le 
catalogue.

Il est pr\'ef\'erable d'utiliser la commande {\bf relabel} d\'ecrite ci-dessous sur 
un volume purg\'e (automatiquement ou avec la commande {\bf purge}).

Si votre librairie comporte un lecteur de codes barres, vous pouvez 
\'etiqueter tous les volumes qu'elle contient en 
utilisant la commande {\bf label barcodes}. En effet, apr\`es le lancement de 
cette commande, Bacula monte chaque cartouche l'une apr\`es l'autre et 
l'\'etiquette du nom de son code barres. simultan\'ement, l'enregistrement 
appropri\'e est cr\'e\'e dans le catalogue. Toute cartouche dont le code barres 
commence par les m\^emes caract\`eres que ceux sp\'ecifi\'es par la directive 
"CleaningPrefix" de la ressource Pool du director est consid\'er\'ee comme 
une cartouche de nettoyage et ne re\c{c}oit donc pas d'\'etiquette, bien 
qu'une entr\'ee dans le catalogue lui soit d\'edi\'ee. Par exemple avec :

\footnotesize
\begin{verbatim}
        Pool {
          Name ...
          Cleaning Prefix = "CLN"
       }
        
\end{verbatim}
\normalsize

tout slot contenant une cartouche de code barres CLNxxxxx sera trait\'ee en tant 
que cartouche de nettoyage et ne sera jamais mont\'ee. Notez que la forme 
compl\`ete de la commande est :

\footnotesize
\begin{verbatim}
update storage=xxx pool=yyy slots=1-5,10 barcodes
\end{verbatim}
\normalsize

\item [list]
   \index[general]{list}
   La commande {\bf list} extrait du catalogue les informations demand\'ees. Les 
   diff\'erentes champs de chaque enregistrement sont \'enum\'er\'es sur une simple 
   ligne. Voici les diff\'erentes formes de la commande : 
   
\footnotesize
\begin{verbatim}
   list jobs
   
   list jobid=<id>           (affiche le jobid id)

   list ujobid=<unique job name> (affiche le job dont le nom unique est <unique job name>)
   
   list job=<job-name>   (Affiche tous les jobs dont le nom est "job-name")

   list jobname=<job-name>  (voir ci-dessus)

     Dans cette commande, vous pouvez ajouter "limit=nn" pour limiter la sortie \`a nn jobs. 
   
   list jobmedia
   
   list jobmedia jobid=<id>
   
   list jobmedia job=<job-name>
   
   list files jobid=<id>
   
   list files job=<job-name>
   
   list pools
   
   list clients
   
   list jobtotals
   
   list volumes
   
   list volumes jobid=<id>
   
   list volumes pool=<pool-name>
   
   list volumes job=<job-name>
   
   list volume=<volume-name>  

   list nextvolume job=<job-name>
   
   list nextvol job=<job-name>

   list nextvol job=<job-name> days=nnn



\end{verbatim}
\normalsize

   Ce que font la plupart des commandes ci-dessus devrait \^etre plus ou moins \'evident. 
   En g\'en\'eral, si vous ne sp\'ecifiez pas tous les arguments requis, la Console 
   vous sollicitera pour les arguments manquants.

   La commande {\bf list nextvol} affiche le nom du volume qui dera utilis\'e par 
   le job sp\'ecifi\'e. Soyez conscient que le prochain volume utilis\'e 
   pour un job d\'epend de nombreux facteurs dont le temps, et les autres 
   jobs qui seront ex\'ecut\'es avant celui sp\'ecifi\'e, qui peuvent remplir une 
   cartouche qui \'etait vide au moment de l'ex\'ecution de {\bf list nextvol}.
   Aussi, consid\'erez la r\'eponse fournie par cette commande comme une bonne 
   estimation plut\^ot que comme une r\'eponse d\'efinitive. De plus, cette commande 
   a certains effets de bord : \'etant donn\'e qu'elle ex\'ecute le m\^eme algorithme 
   qu'un job, elle est susceptible de purger ou recycler un volume. Par d\'efaut, 
   le job sp\'ecifi\'e doit \^etre ex\'ecut\'e dans les deux jours ou aucun volume 
   ne sera trouv\'e. Vous pouvez cependant sp\'ecifier jusqu'\`a 50 jours en avant 
   avec la directive {\bf days=nnn}. Si, par exemple, un vendredi, vous voulez 
   savoir quel volume sera requis lundi pour le job MyJob, utilisez 
   {\bf list nextvol job=MyJob days=3}.

   Si vous souhaitez ajouter vos propres commandes pour interroger le 
   catalogue, vous pouvez les placer dans le fichier {\bf query.sql}. 
   Cela demande quelques connaissances du langage SQL. Voyez le 
   paragraphe sur la commande  {\bf query} ci-dessous pour plus 
   d'informations. Voyez aussi le paragraphe sur la commande 
   {\bf llist} qui permet l'affichage complet des informations du 
   catalogue.
   
   Voici un exemple d'affichage produit par la commande {\bf list pools} :

\footnotesize
\begin{verbatim}
+------+---------+---------+---------+----------+-------------+
| PoId | Name    | NumVols | MaxVols | PoolType | LabelFormat |
+------+---------+---------+---------+----------+-------------+
|    1 | Default |       0 |       0 | Backup   | *           |
|    2 | Recycle |       0 |       8 | Backup   | File        |
+------+---------+---------+---------+----------+-------------+
\end{verbatim}
\normalsize

   Comme mentionn\'e pr\'ec\'edemment, la commande {\bf list} affiche des 
   informations du catalogue. Certais \'el\'ements sont ajout\'es dans le catalogue 
   d\`es le d\'emarrage de Bacula, mais en g\'en\'eral, la plupart ne le sont que 
   lorsqu'ils sont utilis\'es pour la premi\`ere fois. C'est le cas des clients, 
   des jobs, etc.

   Bacula cr\'e\'e une entr\'ee relative \`a un nouveau client dans le catalogue 
   la premi\`ere fois que vous ex\'ecut\'ez un job pour ce client. L'entr\'ee est 
   cr\'e\'ee que le job aboutisse ou qu'il \'echoue, mais il doit au moins d\'emarrer. 
   Lorsque le client est contact\'e, des informations suppl\'ementaires sont 
   r\'ecup\'er\'ees du client (le r\'esultat d'un "uname -a") et ajout\'ees au 
   catalogue. Un {\bf status} n'entra\^ine pas l'enregistrement dans le catalogue. 

   Si vous voulez visualiser les ressources Client disponibles dans votre 
   catalogue, utilisez la commande {\bf show clients}.

\item [llist]
   \index[general]{llist}
   La commande {\bf llist} (pour "long list") admet les m\^emes arguments que la 
   commande list d\'ecrite ci-dessus. La diff\'erence est que {\bf llist} affiche 
   le contenu complet de chaque enregistrement du catalogue s\'electionn\'e. 
   L'affichage des diff\'erents champs est produit verticalement, un champ par 
   ligne. Cette commande peut \^etre tr\`es prolixe.
   
   Si, au lieu du {\bf list pools} de l'exemple pr\'ec\'edent, vous saisissez 
   {\bf llist pools}, vous obtiendrez un affichage de ce genre :

\footnotesize
\begin{verbatim}
          PoolId: 1
            Name: Default
         NumVols: 0
         MaxVols: 0
         UseOnce: 0
      UseCatalog: 1
 AcceptAnyVolume: 1
    VolRetention: 1,296,000
  VolUseDuration: 86,400
      MaxVolJobs: 0
     MaxVolBytes: 0
       AutoPrune: 0
         Recycle: 1
        PoolType: Backup
     LabelFormat: *

          PoolId: 2
            Name: Recycle
         NumVols: 0
         MaxVols: 8
         UseOnce: 0
      UseCatalog: 1
 AcceptAnyVolume: 1
    VolRetention: 3,600
  VolUseDuration: 3,600
      MaxVolJobs: 1
     MaxVolBytes: 0
       AutoPrune: 0
         Recycle: 1
        PoolType: Backup
     LabelFormat: File
      
\end{verbatim}
\normalsize

\item [messages]
   \index[general]{messages}
   Cette commande affiche imm\'ediatement tout message de la console en attente.
 

\item [mount]
   \index[general]{mount}
  
   La commande {\bf mount} est utilis\'ee pour obtenir de Bacula qu'il lise 
   un volume charg\'e dans un lecteur. C'est un moyen d'indiquer \`a Bacula 
   que vous avez charg\'e une cartouche qu'il doit examiner. Cette commande 
   n'est utilis\'ee que lorsque Bacula a demand\'e votre intervention pour 
   charger un lecteur vide, ou lorsque vous avez explicitement d\'emont\'e 
   un volume avec la commande {\bf unmount} dans la Console, ce qui 
   provoque la fermeture du lecteur. Si vous avez une librairie, vous ne 
   ferez pas op\'erer Bacula dessus avec la commande mount. Voici les 
   diff\'erentes formes de cette commande :

mount  storage=\lt{}storage-name\gt{}

mount [ jobid=\lt{}id\gt{} |  job=\lt{}job-name\gt{} ]

   Si vous avez sp\'ecifi\'e {\bf Automatic  Mount = yes} dans la ressource 
   Device du Storage Daemon, Alors Bacula pourra acc\'eder automatiquement 
   au volume, \`a moins que vous ne l'ayez explicitement d\'emont\'e ({\bf unmount}) 
   dans la Console.

\item[python]
   \index[general]{python}
    La commande {\bf python} n'admet qu'un argument : {\bf restart}.
    
   La commande {\bf python} {\bf restart} r\'einitialise l'interpr\'eteur Python 
   du Director. Ceci peut \^etre tr\`es utile pour effectuer des tests, car une 
   fois que le Director est lanc\'e, et l'interpr\'eteur Python initialis\'e, 
   il n'y a pas d'autre moyen de lui faire int\'egrer des modifications 
   du script de d\'emarrage {\bf DirStartUp.py}. Pour plus de d\'etails sur 
   l'\'ecriture de scripts Python, consultez le chapitre \ilink{Ecrire des 
   scripts Python}{_ChapterStart60}.
   
\label{ManualPruning}
\item [prune]
   \index[general]{prune}
   La commande {\bf prune} permet d'\'elaguer en toute s\'ecurit\'e les 
   enregistrements expir\'es du catalogue pour les jobs et les volumes. 
   Cette commande n'affecte que le catalogue, et non les donn\'ees 
   \'ecrites sur les volumes. Dans tous les cas, la commande {\bf prune} 
   respecte les p\'eriodes de r\'etention des enregistrements sp\'ecifi\'es. 
   Vous pouvez \'elaguer les jobs expir\'es, ainsi que les jobs et fichiers 
   d'un volume sp\'ecifi\'e.

prune files|jobs|volume client=\lt{}client-name\gt{} 
volume=\lt{}volume-name\gt{}  

   Pour qu'un volume soit \'elagu\'e, son  {\bf VolStatus} doit \^etre Full, 
   Used, ou Append, faute de quoi l'\'elagage sera sans effet.
   
\item [purge]
   \index[general]{purge}
   La commande {\bf purge} efface les enregistrements sp\'ecifi\'es du catalogue 
   sans \'egards pour les p\'eriodes de r\'etention. {\bf Purge} n'affecte que le 
   catalogue, et non les donn\'ees \'ecrites sur les volumes. Cette commande 
   peut se r\'ev\'eler tr\`es dangereuse car vous pouvez parfaitement supprimer 
   les enregistrements relatifs \`a des sauvegardes valides et r\'ecentes. Aussi, 
   nous vous recommandons de ne pas l'utiliser \`a moins de savoir exactement 
   ce que vous faites. Voici les diff\'erentes formes de la commande {\bf purge} :
   
purge files jobid=\lt{}jobid\gt{}|job=\lt{}job-name\gt{}|client=\lt{}client-name\gt{} 

purge jobs client=\lt{}client-name\gt{} (of all jobs)

purge volume|volume=\lt{}vol-name\gt{} (of all jobs)


   Pour qu'un volume puisse \^etre purg\'e, son {\bf VolStatus} doit \^etre Full,
   Used, ou Append, faute de quoi la purge sera sans effet.

\item [relabel]
   \index[general]{relabel}
   \index[general]{relabel}
   Cette commande sert \`a r\'e-\'etiqueter physiquement un volume. En voici 
   la forme compl\`ete :

relabel storage=\lt{}storage-name\gt{} oldvolume=\lt{}old-volume-name\gt{}  
    volume=\lt{}newvolume-name\gt{} 
 
   Si vous omettez l'un quelconque des arguments, la console vous sollicitera 
   pour obtenir les informations manquantes. Pour qu'un volume puisse \^etre 
   r\'e-\'etiquet\'e, il doit figurer dans le catalogue, et avoir le statut 
   {\bf Purged} ou {\bf Recycle}. Cette situation peut se pr\'esenter 
   automatiquement par l'application des p\'eriodes de r\'etention, ou vous 
   pouvez l'obtenir par une {\bf purge} explicite du volume.

   Une fois que le volume a \'et\'e physiquement r\'e-\'etiquet\'e, les donn\'ees 
   qu'il contenait sont d\'efinitivement et irr\'em\'ediablement perdues.

\item [release]
   \index[general]{release}
   Cette commande ordonne au Storage Daemon de rembobiner la cartouche 
   dans le lecteur, et de relire son \'etiquette \`a la prochaine utilisation 
   de la cartouche.

release storage=\lt{}storage-name\gt{}  

   Apr\`es cette commande, le lecteur est gard\'e \`a l'\'etat ouvert par Bacula 
   (sauf si l'option Always Open est d\'esactiv\'ee dans la configuration 
   du Storage Daemon), et il ne peut donc \^etre utilis\'e par un autre 
   programme. Toutefois, il est possible, avec certains lecteurs, de 
   changer la cartouche \`a ce stade. Lors du prochain job, Bacula saura 
   relire l'\'etiquette de la cartouche pour savoir laquelle est mont\'ee. 
   Si vous voulez \^etre en mesure d'utiliser le lecteur avec un autre 
   programme, par exemple {\bf mt}, vous devez uiliser la commande 
   {\bf unmount} pour que Bacula le lib\`ere compl\`etement.

\item [reload]
  \index[general]{reload}
  Lorsqu'il re\c{c}oit la commande {\bf reload}, le Director relit ses fichiers 
  de configuration et applique les \'eventuelles modifications. Celles-ci 
  sont prises en compte imm\'ediatement, et donc effectives pour tous les 
  jobs \`a venir. Notez cependant qu'en ce qui concerne les modifications 
  apport\'ees aux Schedules, la prise en compte des nouvelles valeur peut 
  \^etre report\'ee au del\`a de l'ex\'ecution des jobs d\'ej\`a planifi\'es pour 
  les deux prochaines heures. Ceci est d\^u au planificateur qui pr\'evoit 
  "pr\'e-planifie" jusqu'\`a deux heures \`a l'avance les jobs \`a ex\'ecuter. 
  Ainsi, des jobs qui ont d\'ej\`a \'et\'e "pr\'e-planifi\'es" seront ex\'ecut\'es 
  suivant les valeurs sp\'ecifi\'ees par la ressource Schedule avant sa 
  modification. Les nouveaux jobs utiliseront les nouvelles valeurs. 
  A chaque fois que vous utilisez la commande {\bf reload} alors que 
  des jobs sont en cours d'ex\'ecution, les valeurs de la configuration 
  pr\'ec\'edente demeurent en vigueur jusqu'\`a ce que les ces jobs se terminent. 
  Le Director peut ainsi conserver jusqu'\`a 10 jeux de configurations 
  ant\'erieures avant de refuser une nouvelle commande {\bf reload}. 
  Une fois que l'un, au moins, des jeux de valeurs ant\'erieur a \'et\'e accept\'e, 
  il peut \`a nouveau accepter de nouvelles commandes {\bf reload}.
  
   Bien qu'il soit possible de recharger la configuration du Director 
   \`a la vol\'ee, alors m\^eme que des jobs sont en cours d'ex\'ecution, il faut 
   garder \`a l'esprit que c'est une op\'eration complexe, qui n'est pas d\'enu\'ee 
   d'effets de bords. C'est pourquoi il est recommand\'e, si vous \^etes amen\'e \`a 
   utiliser la commande {\bf reload}, de red\'emarrer le Director d\`es que vous 
   en aurez l'opportunit\'e.

\label{restore_command}
\item [restore]
   \index[general]{restore}
   La commande {\bf restore} vous permet de s\'electionner un ou plusieurs jobs 
   (JobIds) \`a restaurer selon plusieurs m\'ethodes. Une fois que les JobIds ont 
   \'et\'e s\'electionn\'es, les enregistrements de fichiers sont plac\'es dans une 
   arborescence interne \`a Bacula, et la Console entre dans un mode de 
   s\'election interactif qui vous permet de naviguer dans cette arborescence 
   en s\'electionnant individuellement les fichiers ou r\'epertoires \`a restaurer. 
   Ce mode est assez similaire au mode de s\'election interactif du  programme 
   Unix {\bf restore} standard. 
   
restore storage=\lt{}storage-name\gt{} client=\lt{}client-name\gt{} 
  where=\lt{}path\gt{} pool=\lt{}pool-name\gt{} fileset=\lt{}fileset-name\gt{} 
  select current all done  

   O\`u l'option {\bf current}, si elle est sp\'ecifi\'ee, indique \`a la commande 
   {\bf restore} de s\'electionner automatiquement la sauvegarde la plus 
   r\'ecente (sinon, vous serez sollicit\'e \`a ce sujet). L'option  {\bf all}, 
   si elle est sp\'ecifi\'ee, indique \`a la commande {\bf restore} de restaurer 
   tous les fichiers (sinon, vous serez sollicit\'e \`a ce sujet). Pour plus de 
   d\'etails concernant la commande {\bf restore}, consultez le chapitre 
   \ilink{Restaurations avec Bacula}{_ChapterStart13}.
   
\item [run]
   \index[general]{run}
   Cette commande vous permet d'ex\'ecuter imm\'ediatement vos jobs. Voici la forme 
   compl\`ete de cette commande :

run job=\lt{}job-name\gt{} client=\lt{}client-name\gt{}
  fileset=\lt{}FileSet-name\gt{}  level=\lt{}level-keyword\gt{}
  storage=\lt{}storage-name\gt{}  where=\lt{}directory-prefix\gt{}
  when=\lt{}universal-time-specification\gt{}  yes  

   Toute information omise quoique requise fait l'objet d'une liste de s\'election, 
   et avant le lancement du job, un bilan des param\`etres vous est pr\'esent\'e avec 
   options d'accord, refus et modification, \`a moins que vous ayez sp\'ecifi\'e 
   {\bf yes}, auquel cas le job est imm\'ediatement envoy\'e vers le planificateur.
   
   Sur mon syst\`eme, j'obtiens ce qui suit lorsque je lance la commande run :

\footnotesize
\begin{verbatim}
A job name must be specified.
The defined Job resources are:
     1: Matou
     2: Polymatou
     3: Rufus
     4: Minimatou
     5: Minou
     6: PmatouVerify
     7: MatouVerify
     8: RufusVerify
     9: Watchdog
Select Job resource (1-9):
     
\end{verbatim}
\normalsize

Si je choisis le num\'ero 5, j'obtiens :

\footnotesize
\begin{verbatim}
Run Backup job
JobName:  Minou
FileSet:  Minou Full Set
Level:    Incremental
Client:   Minou
Storage:  DLTDrive
Pool:     Default
When:     2003-04-23 17:08:18
OK to run? (yes/mod/no):
     
\end{verbatim}
\normalsize

Si maintenant j'entre {\bf yes}, le job est ex\'ecut\'e. Si je choisis {\bf mod}, 
voici les otpions qui me sont propos\'ees :

\footnotesize
\begin{verbatim}
Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Client
     6: When
     7: Pool
Select parameter to modify (1-7):
     
\end{verbatim}
\normalsize

Vous pouvez, si vous le souhaitez, d\'emarrer un job plus tard, en utilisant le 
param\`etre {\bf When}. Pour cela, faites le choix {\bf mod}, puis s\'electionnez 
{\bf When} (no. 6) et enfin, saisissez l'heure et le jour de lancement 
d\'esir\'es au format AAAA-MM-JJ HH:MM:SS.

\item [setdebug]
   \index[general]{setdebug}
   \index[general]{setdebug}
   \index[general]{debuggage}
   \index[general]{debuggage Win32}
   \index[general]{Windows!debuggage}
   
   Cette commande est utilis\'ee pour param\'etrer le niveau de d\'ebuggage de chaque 
   {\it daemon}. Voici la forme compl\`ete de cette commande.

setdebug level=nn [trace=0/1 client=\lt{}client-name\gt{} | dir | director |
  storage=\lt{}storage-name\gt{} | all]  

   Si le param\`etre de tra\c{c}age est actif (trace=1), alors le {\it daemon} est 
   plac\'e en mode tra\c{c}age, ce qui signifie que toutes les informations de 
   d\'ebuggage sont envoy\'ees vers le fichier {\bf bacula.trace} dans le 
   r\'epertoire courant du {\it daemon}. En principe, ce n'est n\'ecessaire 
   que pour le d\'ebuggage des clients Win32 o\`u les informations ne peuvent 
   \^etre envoy\'ees vers un terminal ou redirig\'ees vers un fichier. en mode 
   tra\c{c}age, chaque message de d\'ebuggage est ajout\'e au fichier, que vous devez 
   supprimer explicitement lorsque vous avez fini.

\item [show]
   \index[general]{show}
   \index[general]{show}
   LA commande {\bf show} \'enum\`ere les directives des ressources du Director 
   telles qu'ells sont d\'efinies dans son fichier de configuration. 
   Cette commande est surtout utilis\'ee par les d\'eveloppeurs \`a des fins 
   de d\'ebuggage. LEs mots-clef suivants sont accept\'es :
   catalogs, clients, counters, devices, directors,
   filesets, jobs, messages, pools, schedules, storages, all, help.
   Ne confondez pas cette commande ave la commande {\bf list}, qui affiche 
   quand \`a elle le contenu du catalogue.

\item [sqlquery]
   \index[general]{sqlquery}
   La commande  {\bf sqlquery} place le programme Console en mode de 
   requ\^etes SQL, dans lequel chaque ligne que vousq tapez est concat\'en\'ee 
   \`a la pr\'ec\'edents jusqu'\`a ce qu'un point-virgule (;) soit rencontr\'e. Le 
   point-virgule termine la commande qui est alors directement envoy\'e au moteur 
   de base de donn\'ee SQL. Lorsque le r\'esultat issu de la base de donn\'ee SQL est 
   affich\'e, la Console est pr\`ete \`a recevoir une nouvelle commande SQL. 
   Pour sortir du mode {\bf sqlquery} et reevenir \`a l'invite de la Console, 
   entrez un point (.).

   Cette commande vous permet d'interroger directement le catalogue. Notez 
   que vous devriez savoir exactement ce que vous faites en utilisant cette 
   commande, car vous pouvez endommager s\'erieusement votre catalogue. 
   Consultez le paragraphe relatif \`a la commande {\bf query} qui offre un 
   moyen \`a la fois plus simple et plus sur de saisir des requ\^etes SQL.
   
   En fonction du moteur de base de donn\'ees que vous utilisez (MySQL, 
   PostgreSQL ou SQLite), vous disposerez de commandes quelque peu diff\'erentes. 
   Pour plus de d\'etails, r\'ef\'erez-vous aux documentations de MySQL, PostgreSQL 
   ou SQLite.
   
\item [status]
   \index[general]{status}
   Cette commande produit un \'etat des prochains jobs planifi\'es au cours des 
   24 prochanes heures, ainsi que l'\'etat des jobs en cours d'ex\'ecution. Voici 
   la forme compl\`ete de cette commande :

status [all | dir=\lt{}dir-name\gt{} | director | 
  client=\lt{}client-name\gt{} | storage=\lt{}storage-name\gt{} |
  days=nnn]

   Si vous entrez {\bf status dir}, la Console \'enum\`ere tous les jobs en cours 
   d'ex\'ecution, un r\'esum\'e des jobs planifi\'e pour ex\'ecution au cours des prochaines 
   24 heures incluant le volume qui sera probablement utilis\'e, et donne la liste 
   des dix derniers jobs ex\'ecut\'es avec leurs \'etats. Gardez \`a l'esprit les deux 
   \'el\'ements suivants :
   \begin{itemize}
   \item L'obtention du volume n\'ecessite d'appliquer le m\^eme algorithme que 
   celui utilis\'e lors de l'ex\'ecution d'un job, ce qui peut r\'esulter en un \'elagage 
   de cartouche.
   \item Le volume affich\'e est, au mieux, une bonne supposition. En effet le 
   volume effectivement utilis\'e peut \^etre diff\'erent en raison du temps \'ecoul\'e 
   entre le status et l'ex\'ecution du job, un autre job ayant pu, entre temps, 
   remplir compl\`etement la cartouche.
   \end{itemize}

   Dans la liste des jobs en cours d'ex\'ecutions, vous pouvez trouver ce type 
   d'informations :

\footnotesize
\begin{verbatim}
2507 Catalog MatouVerify.2004-03-13_05.05.02 is waiting execution
5349 Full    CatalogBackup.2004-03-13_01.10.00 is waiting for higher
             priority jobs to finish
5348 Differe Minou.2004-03-13_01.05.09 is waiting on max Storage jobs
5343 Full    Rufus.2004-03-13_01.05.04 is running
\end{verbatim}
\normalsize

   La liste ci-dessus indique que le job de JobId 5343 (Rufus) est en cours. 
   Le job de JobId 5348 (Minou) est en attente de la fin du job 5343 
   qui utilise la m\^eme ressource Storage, ce qui provoque le "waiting 
   on max Storage jobs". Le job de JobId 5349 a une priorit\'e inf\'erieure 
   \`a celle de tous les autres jobs, aussi, il est en attente de la fin de 
   jobs de priorit\'es sup\'erieures. Finalement, le job de jobId 2508 (MatouVerify) 
   est en attente ("waiting execution") car un seul job peut \^etre ex\'ecut\'e 
   en m\^eme temps.

   Si vous faites un {\bf status dir}, Bacula affiche par d\'efaut les premi\`eres 
   occurrences de tous les jobs pr\'evus pour ex\'ecution aujourd'hui et demain.
   Si vous voulez voir les jobs pr\'evus pour les trois prochains jours, 
   (Si, par exemple vendredi, vous voulez voir les premi\`eres occurrences 
   des cartouches \`a utiliser vendredi, samedi, dimanche et lundi), vous 
   pouvez ajouter l'option {\bf days=3}. Notez, {\bf days=0}  montre les 
   premi\`eres occurrences des jobs planifi\'es pour \^etre ex\'ecut\'es aujourd'hui 
   seulement. Si vous avez plusieurs ex\'ecutions planifi\'ees, pour chaque 
   job, seule la premi\`ere occurrence sera affich\'e pour la p\'eriode sp\'ecifi\'ee.

   Si votre job para\^it bloqu\'e, vous pouvez avoir une id\'ee g\'en\'erale du probl\`eme 
   en utilisant {\bf status dir}, et obtenir une information plus sp\'ecifique 
   avec  {\bf status storage=xxx}. Par exemple, si j'utilise cette derni\`ere 
   commande sur un syst\`eme inoccup\'e, j'obtiens :

\footnotesize
\begin{verbatim}
status storage=File
Connecting to Storage daemon File at 192.168.68.112:8103

rufus-sd Version: 1.39.6 (24 March 2006) i686-pc-linux-gnu redhat (Stentz)
Daemon started 26-Mar-06 11:06, 0 Jobs run since started.

Running Jobs:
No Jobs running.
====

Jobs waiting to reserve a drive:
====

Terminated Jobs:
 JobId  Level   Files          Bytes Status   Finished        Name 
======================================================================
    59  Full        234      4,417,599 OK       15-Jan-06 11:54 kernsave
====

Device status:
utochanger "DDS-4-changer" with devices:
   "DDS-4" (/dev/nst0)
Device "DDS-4" (/dev/nst0) is mounted with Volume="TestVolume002"
Pool="*unknown*"
    Slot 2 is loaded in drive 0.
    Total Bytes Read=0 Blocks Read=0 Bytes/block=0
    Positioned at File=0 Block=0
Device "Dummy" is not open or does not exist.
No DEVICE structure.

Device "DVD-Writer" (/dev/hdc) is not open.
Device "File" (/tmp) is not open.
====

In Use Volume status:
====
\end{verbatim}
\normalsize

Ce qui r\'ev\`ele qu'aucun job n'est en cours d'ex\'ecution, et qu'aucun des 
p\'eriph\'eriques n'est en cours d'utilisation. Si je d\'emonte la librairie 
({\bf unmount}), qui ne sera plus utilis\'ee dans cet exemple, et que je lance 
un job qui utilise le stockage File, le job se bloque. Si je demande \`a 
nouveau {\bf status storage=xxx}, j'obtiens :

\footnotesize
\begin{verbatim}
status storage=File
...
Device status:
Autochanger "DDS-4-changer" with devices:
   "DDS-4" (/dev/nst0)
Device "DDS-4" (/dev/nst0) is not open.
    Device is BLOCKED. User unmounted.
    Drive 0 is not loaded.
Device "Dummy" is not open or does not exist.
No DEVICE structure.

Device "DVD-Writer" (/dev/hdc) is not open.
Device "File" (/tmp) is not open.
    Device is BLOCKED waiting for media.
====
...
\end{verbatim}
\normalsize

Il devrait maintenant \^etre clair que si un job n\'ecessitant la librairie 
est ex\'ecut\'e, il bloquera en raison du d\'emontage de cette derni\`ere par 
l'utilisateur. Mais le probl\`eme pour le job que j'ai lanc\'e avec le 
p\'eriph\'erique "File" est que le p\'eriph\'erique est bloqu\'e en attente 
d'un media : Bacula a besoin que vous \'etiquetiez un volume.

\item [unmount]
   \index[general]{unmount}
   Cette commande sert \`a ordonner au Storage Daemon de d\'emonter le p\'eriph\'erique 
   sp\'ecifi\'e. Les formes de cette commande sont les m\^emes que celle de la commande 
   mount :
   
\footnotesize
\begin{verbatim}
unmount storage=<storage-name>

unmount [ jobid=<id> | job=<job-name> ]
\end{verbatim}
\normalsize

\label{UpdateCommand}
\item [update]
   \index[general]{update}
   Cette commande met \`a jour le catalogue, que ce soit pour un pool sp\'ecifique, 
   un enregistrement de volume, ou les slots d'une librairie dot\'ee d'un lecteur 
   de codes barres. Dans le cas de la mise \`a jour d'un enregistrement de pool, 
   la nouvelle configuration est automatiquement r\'ecup\'er\'ee de la ressource 
   correspondante du fichier de configuration du Director. Cette commande peut 
   notamment servir \`a augmenter le nombre maxial de volumes dans un pool. Les 
   principaux mots-clef suivants peuvent \^etre utilis\'es :

\footnotesize
\begin{verbatim}
   media, volume, pool, slots  
\end{verbatim}
\normalsize

Dans le cas de la mise \`a jour d'un volume, vous serez interrog\'e sur le 
param\`etre que vous voulez modifier. Voici ces param\`etres :

\footnotesize
\begin{verbatim}
 
   Volume Status
   Volume Retention Period
   Volume Use Duration
   Maximum Volume Jobs
   Maximum Volume Files
   Maximum Volume Bytes
   Recycle Flag
   Slot
   InChanger Flag
   Pool
   Volume Files
   Volume from Pool
   All Volumes from Pool
   
\end{verbatim}
\normalsize

   Pour le param\`etre slot, {\bf update slots}, Bacula obtient une liste 
   de tous les slots et de leurs codes barres du Storage Daemon, 
   pour chaque code barres trouv\'e, le slot est mis \`a jour dans 
   l'enregistrement Media du catalogue. C'est tr\`es pratique si vous 
   d\'eplacez des cartouches dans la librairie, ou si vous changez des 
   magasins de cartouches. Dans la foul\'ee, le drapeau InChanger est 
   aussi mis \`a jour.Ceci permet \`a BAcula de savoir quels cartouches sont 
   effectivement dans la librairie.
   
   Si vous n'avez pas de lecteur de codes barres, vous pouvez faire la 
   m\^eme chose depuis la version 1.33 gr\^ace \`a la commande {\bf update slots scan}. 
   Le mot-clef {\bf scan} ordonne \`a Bacula de monter physiquement chaque 
   cartouche afin de lire son VolumeName.

   Pour le param\`etre Pool,  {\bf update pool}, Bacula d\'eplace le volume de 
   son pool courant vers le pool sp\'ecifi\'e.

   Pour les parm\`etres {\bf Volume from Pool} et {\bf All Volumes from Pool}, 
   les valeurs suivantes sont mises \`a jour depuis l'enregistrement 
   de pool :  Recycle, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles, 
   and MaxVolBytes.

   Voici la forme compl\`ete de la commande {\bf update} :

\footnotesize
\begin{verbatim}
       update volume=xxx pool=yyy slots volstatus=xxx VolRetention=ddd
         VolUse=ddd MaxVolJobs=nnn MaxVolBytes=nnn Recycle=yes|no
         slot=nnn enabled=n
      
\end{verbatim}
\normalsize

\item [use]
   \index[general]{use}
   Cette commande vous perment de pr\'eciser le catalogue que vous voulez utiliser. 
   En principe, vous n'utiliserez qu'un seul catalogue, aussi vous n'aurez pas 
   besoin de faire ce choix. Sinon, utilisez cette commande pour passer de l'un 
   de vos catalogues \`a l'autre.

use \lt{}database-name\gt{} 

\item [var]
   \label{var}
   \index[general]{var name}
   Cette commande prend une cha\^ine \'eventuellement encadr\'ee de guillemets et effectue 
   l'expansion des variables comme elle serait effectu\'ee au niveau de la 
   directive {\bf LabelFormat}. Ainsi, vous pouvez tester vos cha\^ines 
   de format d'\'etiquetage. La diff\'erence entre la commande {\bf var}  et le 
   processus effectif est que pour la premi\`ere, aucun job n'est en cours, 
   aussi des valeurs factices sont utilis\'ees au lieu des variables sp\'ecifiques 
   aux jobs. Cela vous permet cependant de vous faire une bonne id\'ee de ce qui 
   se passerait dans le cas r\'eel.

\item [version]
   \index[general]{version}
   Cette commande affiche la version du Director.

\item [quit]
   \index[general]{quit}
   Cette commande stoppe le programme Console. Celui-ci envoie la requ\^ete 
   {\bf quit} au Director et attend son accus\'e de r\'eception. Si le Director 
   est occup\'e, cela peut prendre un certain temps. Vous pouvez quitter 
   imm\'ediatement en utilisant la variante {\bf .quit} ({\bf quit} pr\'ec\'ed\'ee 
   d'un point).
  
\item [query]
   \index[general]{query}
   Cette commande lit une requ\^ete SQL pr\'ed\'efinie dans le fichier de requ\^etes 
   (le nom et l'emplacement de ce fichier sont d\'efinis par la directive 
   QueryFile du fichier de configuration du Director). Il vous est alors 
   demand\'e de s\'electionner une requ\^ete du fichier, et \'eventuellement de 
   saisir un ou plusieurs param\`etres. La requ\^ete est alors soumise au 
   moteur de base de donn\'ees.

Les requ\^etes suivantes sont actuellement (version 1.24) disponibles :

\footnotesize
\begin{verbatim}
Available queries:
  1: List Job totals:
  2: List where a file is saved:
  3: List where the most recent copies of a file are saved:
  4: List total files/bytes by Job:
  5: List total files/bytes by Volume:
  6: List last 20 Full Backups for a Client:
  7: List Volumes used by selected JobId:
  8: List Volumes to Restore All Files:
  9: List where a File is saved:
Choose a query (1-9):
      
\end{verbatim}
\normalsize

\item [exit]
   \index[general]{exit}
   Cette commande termine le programme Console.

\item [wait]
   \index[general]{wait}
   Cette commande place le Director en pause jusqu'\`a ce qu'il n'y ait plus 
   aucun job en ex\'ecution. Cette commande est utile dans des situation 
   d'utilisation automatis\'ee par scripts telles que les tests de r\'egression 
   o\`u vous voulez d\'emarrer un job, et attendre qu'il se termine avant de 
   poursuivre. Cette commande admet les options suivantes :

\footnotesize
\begin{verbatim}
   wait [jobid=nn] [jobuid=unique id] [job=job name]
\end{verbatim}
\normalsize

\end{description}

\label{dotcommands}

\section{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}
\index[general]{Commands!sp\'eciales, pr\'ec\'ed\'ees d'un point}
\index[general]{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}
\addcontentsline{toc}{section}{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un point}

Voici une liste de commandes pr\'efix\'ees d'un point (.). Elles ont pour vocation 
d'\^etre utilis\'ees soit dans des programmes {\it batch}, soit par des interfaces 
graphiques. Elles ne sont, en principe, pas utilis\'ees en mode interactif. 
Une fois que le d\'eveloppement d'interfaces graphiques aura d\'emarr\'e, cette liste 
s'accro\^itra consid\'erablement. 

\footnotesize
\begin{verbatim}
.backups job=xxx      list backups for specified job
.defaults client=xxx fileset=yyy  list defaults for specified client
.die                  cause the Director to segment fault (for debugging)
.dir                  when in tree mode prints the equivalent to the dir command,
                        but with fields separated by commas rather than spaces.
.jobs                 list all job names
.levels               list all levels
.filesets             list all fileset names
.clients              list all client names
.pools                list all pool names
.types                list job types
.msgs                 return any queued messages
.messages             get quick messages
.help                 help command output
.quit                 quit
.status               get status output
.exit                 quit
\end{verbatim}
\normalsize

\label{atcommands}

\section{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}
\index[general]{Commandes!sp\'eciales arobase @}
\index[general]{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}
\addcontentsline{toc}{section}{Commandes sp\'eciales, pr\'ec\'ed\'ees d'un arobase (@)}

Normalement, toutes les commandes saisies dans la Console sont imm\'ediatement 
transmises au Director, qui peut r\'esider sur une autre machine, afin d'y \^etre 
ex\'ecut\'ees. Il existe cependant quelques commandes, toutes pr\'ec\'ed\'ees du 
caract\`ere arobase (@), qui ne sont pas envoy\'ees au Director, mais 
directement interpr\'et\'ees par la Console. Notez que seule la Console 
tty impl\'emente ces commandes, et non la Console GNOME. En voici la liste :

\begin{description}

\item [@input \lt{}nom-de-fichier\gt{}]
   \index[general]{@input \lt{}nom-de-fichier\gt{}}
   Lit et ex\'ecute les commandes consign\'ees dans le fichier sp\'ecifi\'e.

\item [@output \lt{}nom-de-fichier\gt{} w/a]
   \index[general]{@output \lt{}nom-de-fichier\gt{} w/a}
   Envoit l'ensemble des retours de la Console vers le fichier sp\'ecifi\'e, 
   avec \'ecrasement si l'option {\bf w} est sp\'ecifi\'ee, ou ajout \`a la suite si l'option 
   {\bf a} est sp\'ecifi\'ee. Pour rediriger la sortie vers le terminal, entrez 
   simplement {\bf output} sans sp\'ecifier de nom de fichier. 
   ATTENTION : prenez garde de ne pas \'ecraser un fichier valide. 
   Voici un exemple typique lors d'un test de r\'egression :

\footnotesize
\begin{verbatim}
    @output /dev/null
    commands ...
    @output
    
\end{verbatim}
\normalsize

\item [@tee \lt{}nom-de-fichier\gt{} w/a]
   \index[general]{@tee \lt{}nom-de-fichier\gt{} w/a}
   Comme la commande pr\'ec\'edente avec envoi simultan\'e vers le terminal. Pour 
   sortir de ce mode, vous pouvez utiliser {\bf @tee} ou {\bf @output} sans 
    sp\'ecifier de nom de fichier.

\item [@sleep \lt{}seconds\gt{}]
   \index[general]{@sleep \lt{}seconds\gt{}}
   Met en sommeil pour une dur\'ee du nombre de secondes sp\'ecifi\'e. 

\item [@time]
   \index[general]{@time}
   Affiche la date et l'heure courantes.

\item [@version]
   \index[general]{@version}
   Affiche la version de la Console.

\item [@quit]
   \index[general]{@quit}
   Quitte.  

\item [@exit]
   \index[general]{@exit}
   Quitte.  

\item [@\# n-importe-quoi]
   \index[general]{n-importe-quoi}
   Commentaire. 
\end{description}

\label{scripting}

\section{Ex\'ecuter la Console depuis un script shell}
\index[general]{Script!Ex\'ecuter la Console depuis un script shell}
\index[general]{Ex\'ecuter la Console depuis un script shell}
\addcontentsline{toc}{section}{Ex\'ecuter la Console depuis un script shell}
Vous pouvez automatiser de nombreuses t\^aches effectu\'ees \`a la Console, en les 
ex\'ecutant dans un script shell. Par exemple, si vous avez cr\'e\'e un fichier 
contenant ceci :

\footnotesize
\begin{verbatim}
 ./bconsole -c ./bconsole.conf <<END_OF_DATA
 unmount storage=DDS-4
 quit
 END_OF_DATA
\end{verbatim}
\normalsize

A l'ex\'ecution de ce fichier, le p\'eriph\'erique DDS-4 est d\'emont\'e. 
Vous pouvez, si vous le souhaitez, ex\'ecuter cette t\^ache lors d'un job avec 
les directives {\bf RunBeforeJob} ou {\bf RunAfterJob}.

Il est aussi possible d'ex\'ecuter la Console \`a partir de l'entr\'ee d'un 
fichier contenant les commandes comme suit :

\footnotesize
\begin{verbatim}
./bconsole -c ./bconsole.conf <filename
\end{verbatim}
\normalsize

o\`u le fichier nomm\'e {\bf filename} contient un ensemble quelconque de 
commandes de la Console.

Voici un exemple r\'eel, issu des tests de r\'egression de Bacula. Il 
\'etiquette un volume (sur disque) ex\'ecute une sauvegarde puis une 
restauration des fichiers sauvegard\'es.

\footnotesize
\begin{verbatim}
bin/bconsole -c bin/bconsole.conf <<END_OF_DATA
@output /dev/null
messages
@output /tmp/log1.out
label volume=TestVolume001
run job=Client1 yes
wait
messages
@#
@# now do a restore
@#
@output /tmp/log2.out
restore current all
yes
wait
messages
@output
quit
END_OF_DATA
\end{verbatim}
\normalsize

Les donn\'ees issues de la sauvegarde sont envoy\'ees vers  /tmp/log1.out et 
celles de la restaurations vers /tmp/log2.out. Pour v\'erifier que les 
op\'erations se sont d\'eroul\'ees correctement, les fichiers de sorties 
sont contr\^ol\'es avec :

\footnotesize
\begin{verbatim}
grep "^Termination: *Backup OK" /tmp/log1.out
backupstat=$?
grep "^Termination: *Restore OK" /tmp/log2.out
restorestat=$?
\end{verbatim}
\normalsize

\section{Ajouter des volumes \`a un pool}
\index[general]{Ajouter des volumes \`a un pool}
\index[general]{Pool!Ajouter des volumes \`a un}
\addcontentsline{toc}{section}{Ajouter des volumes \`a un pool}

Si vous avez utilis\'e la commande {\bf label} pour \'etiqueter un volume, alors 
celui-ci est automatiquement ajout\'e au pool, et vous n'avez pas besoin de le faire 
manuellement.

Une alternative consiste \`a ajouter plusieurs volumes \`a un pool sans les 
\'etiqueter pr\'ealablement. Vous devrez alors les \'etiqueter plus tard, lorsque Bacula 
en aura besoin. 

Avant d'ajouter un volume \`a un pool, vous devez conna\^itre les informations 
suivantes :

\begin{enumerate}
\item Le nom du pool (normalement, "Default") ;  
\item Le type de media tel qu'il est sp\'ecifi\'e dans la ressource Storage 
du fichier de configuration du Director (par exemple, "DLT8000") ;
\item Le nombre de volumes que vous voulez cr\'eer, et leurs noms.
The number and names of the Volumes you wish to create. 
\end{enumerate}

Par exemple, pour ajouter un media \`a un pool, vous utiliseriez les commandes 
suivantes dans la Console :

\footnotesize
\begin{verbatim}
*add
Enter name of Pool to add Volumes to: Default
Enter the Media Type: DLT8000
Enter number of Media volumes to create. Max=1000: 10
Enter base volume name: Save
Enter the starting number: 1
10 Volumes created in pool Default
*
\end{verbatim}
\normalsize

Pour voir ce que vous avez ajout\'e, tapez :

\footnotesize
\begin{verbatim}
*list media pool=Default
+-------+----------+---------+---------+-------+------------------+
| MedId | VolumeNa | MediaTyp| VolStat | Bytes | LastWritten      |
+-------+----------+---------+---------+-------+------------------+
|    11 | Save0001 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    12 | Save0002 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    13 | Save0003 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    14 | Save0004 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    15 | Save0005 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    16 | Save0006 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    17 | Save0007 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    18 | Save0008 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    19 | Save0009 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
|    20 | Save0010 | DLT8000 | Append  |     0 | 0000-00-00 00:00 |
+-------+----------+---------+---------+-------+------------------+
*
\end{verbatim}
\normalsize

Notez que la Console a automatiquement ajout\'e un num\'ero au nom de volume de 
base que vous avez sp\'ecifi\'e ("Save" dans ce cas). Si vous ne souhaitez pas 
ce comportement, r\'epondez simplement 0 (z\'ero) \`a la queston "Enter number 
of Media volumes to create . Max=1000:" et un seul volume sera cr\'e\'e avec 
le nom exact que vous avez sp\'ecifi\'e.
