%%
%%

\section*{La commande restore de la console Bacula}
\label{_ChapterStart13}
\index[general]{Commande!restore de la console Bacula}
\index[general]{La commande restore de la console Bacula}
\addcontentsline{toc}{section}{La commande restore de la console Bacula}

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

Nous allons maintenant d\'ecrire la restauration de fichiers avec la commande
{\bf restore} de la Console, qui est le mode de restauration recommand\'e.
Il existe cependant un programme ind\'ependant nomm\'e {\bf bextract}, qui permet
lui aussi de restaurer des fichiers. Pour plus d'informations sur ce
programme, consultez le chapitre \ilink{Programmes utilitaires Bacula}{bextract}
de ce manuel. Vous y trouverez aussi des informations sur le programme {\bf bls}
qui sert \`a produire une liste du contenu de vos volumes, et sur le programme
{\bf bscan} qui vous sera utilie si vous voulez restaurer les enregistrements
du catalogue relatifs \`a un ancien volume qui n'y figure plus.

En g\'en\'eral, pour restaurer un fichier ou un ensemble de fichiers, vous devez
ex\'ecuter un job de type {\bf restore}, par cons\'equent, vous devez pr\'ed\'efinir
un tel job dans le fichier de configuration de votre Director. Les param\`etres
(Client, FileSet,...) que vous d\'efinissez ici ne sont pas importants,
Bacula les ajustera automatiquement lors de l'utilisation de {\bf restore}.

Bacula \'etant un programme r\'eseau, il vous appartient de vous assurer que
vous avez s\'electionn\'e le bon client et le bon disque dur pour recevoir la
restauration. Bacula peut sauvegarder le client A et restaurer ses fichiers 
sur le client B, pourvu que leurs syst\`emes ne soient pas trop diff\'erents 
au niveau de leurs structures de fichiers. Par d\'efaut, Bacula restaure les 
donn\'ees sur leur client d'origine, mais pas \`a leur emplacement d'origine : 
dans le r\'epertoire {\bf /tmp/bacula-restores}. Vous pouvez modifier ces 
valeurs par d\'efaut lorsque la commande {\bf restore} vous demande confirmation 
d'ex\'ecution du job en choisissant l'option {\bf mod}.

\label{Example1}
\subsection*{La commande Restore}
\index[general]{Commande!Restore }
\index[general]{La commande Restore}
\addcontentsline{toc}{subsection}{La commande Restore}
Puisque Bacula maintient un catalogue des fichiers sauvegard\'es, et des volumes 
o\`u ils sont stock\'es, il peut se charger de la majeure partie du travail 
d'intendance. Ainsi, il vous suffit de sp\'ecifier le type de restauration que 
vous souhaitez (d'apr\`es la derni\`ere sauvegarde, d'apr\`es la derni\`ere sauvegarde 
ant\'erieure \`a une date sp\'ecifi\'ee...), et quels fichiers vous voulez restaurer. 

Ceci est r\'ealis\'e par la commande {\bf restore} de la Console. Vous s\'electionnez 
d'abord le type de restauration souhait\'ee ce qui entra\^ine la s\'election des 
JobIds requis et la construction d'une arborescence interne \`a Bacula contenant 
les enregistrements de fichiers des JobIds s\'electionn\'es. A ce stade, le 
processus de restauration entre dans un mode o\`u vous pouvez naviguer 
interactivement dans l'arborescence des fichiers disponibles pour restauration 
et s\'electionner ceux que vous voulez restaurer. Ce mode est similaire au 
programme de s\'election de fichier interactif standard d'Unix {\bf restore}.

Si vos fichiers ont \'et\'e \'elagu\'es, la commande {\bf restore} sera dans 
l'incapacit\'e de les trouver. Voyez ci-dessous pour plus de d\'etails sur ce cas 
de figure.

Dans la Console, apr\`es avoir saisi {\bf restore}, le menu suivant vous est 
pr\'esent\'e :

\footnotesize
\begin{verbatim}
First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.
To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Cancel
Select item:  (1-12):
\end{verbatim}
\normalsize

\begin{itemize}
\item Le choix 1 \'enum\`ere les 20 derniers jobs ex\'ecut\'es. Si vous trouvez 
   celui (ceux) que vous voulez, vous pouvez ensuite faire le choix 3 et entrer 
   son (leurs) JobId(s).

\item Le choix 2 affiche tous les Jobs ayant sauvegard\'e un fichier 
   sp\'ecifi\'e. Si vous trouvez celui (ceux) que vous voulez, vous pouvez ensuite 
   faire le choix 3 et entrer son (leurs) JobId(s).

\item Le choix 3 vous permet de saisir une liste de JobIds, s\'epar\'es par des 
   virgules. Les fichiers de ces jobs seront plac\'es dans l'arborescence afin 
   que vous puissiez s\'electionner ceux que vous voulez restaurer.

\item Le choix 4 vous permet d'entrer une requ\^ete SQL arbitraire. C'est 
   certainement le moyen le plus primitif pour trouver les jobs d\'esir\'es, 
   mais aussi le plus flexible. Si vous trouvez celui (ceux) que vous voulez, 
   vous pouvez ensuite faire le choix 3 et entrer son (leurs) JobId(s).
      
\item Le choix 5 s\'electionne automatiquement la full la plus r\'ecente, et toutes 
   les incr\'ementales et diff\'erentielles subs\'equentes \`a cette full pour un 
   client sp\'ecifi\'e. Il s'agit l\`a des jobs et fichiers qui, si vous les 
   restaurez, ram\`eneront votre syst\`eme \`a son dernier \'etat sauvegard\'e. 
   Les JobIds sont automatiquement charg\'es dans l'arborescence. C'est 
   probablement le plus pratique des choix propos\'es pour restaurer un 
   client \`a son \'etat le plus r\'ecent.

   Notez que ce processus de s\'election automatique ne s\'electionnera jamais 
   un job qui a \'echou\'e (termin\'e avec un statut d'erreur). Si vous disposez 
   d'un tel job dont vous voulez extraire des fichiers, vous devez 
   eplicitement entrer son JobId au niveau du choix 3 et choisir les fichiers 
   \`a restaurer.
   
   Si certains de jobs requis pour la restauration ont eu leurs enregistrements 
   de fichiers \'elagu\'es, la restauration sera incompl\`ete. Bacula ne d\'etecte 
   pas, pour l'instant, cette condition. Vous pouvez cependant la 
   contr\^oler en examinant attentivement la liste des jobs s\'electionn\'es 
   et affich\'es par Bacula. Si vous trouvez des jobs dont le champ JobFiles 
   est \`a z\'ero alors que ces fichiers auraient d\^u \^etre sauvegard\'es, alors 
   vous pouvez vous attendre \`a des probl\`emes.
   
   Si tous les enregistrements de fichiers ont \'et\'e \'elagu\'es, Bacula constatera 
   qu'il n'y a aucune r\'ef\'erence \`a aucun fichier pour le JobIds s\'electionn\'es 
   et vous en informera, et vous proposera de faire une restauration compl\`ete 
   (non s\'elective) de ces JobIds. Ceci est possible car Bacula sait encore 
   o\`u commencent les donn\'ees sur les volumes, m\^eme s'il ne sait plus o\`u sont 
   les fichiers individuellement.
   
\item Le choix 6 vous permet de sp\'ecifier une date et un heure. Bacula 
   s\'electionne alors automatiquement la plus r\'ecente full ant\'erieure \`a cette date 
   ainsi que les incr\'ementales et diff\'erentielles subs\'equentes \`a cette full et 
   ant\'erieures \`a cette date.

\item Le choix 7 vous permet de sp\'ecifier un ou plusieurs noms de fichiers 
   (le chemin absolu est requis) \`a restaurer. Les noms de fichiers sont saisis 
   un par un, \`a moins que vous ne pr\'ef\'eriez cr\'eer un fichier pr\'efix\'e du 
   caract\`ere "moins" (\lt{}) que Bacula consid\`ere comme une liste de fichier 
   \`a restaurer. Pour quitter ce mode, entrez une ligne vide.

\item Le choix 8 vous permet de sp\'ecifier une date et une heure avant 
   d'entrer les noms de fichiers. Voir le choix 7 pour plus de d\'etails.

\item Le choix 9 vous permet de d\'eterminer les JobIds de la sauvegarde 
   la plus r\'ecente pour un client. C'est essentiellement la m\^eme chose 
   que le choix 5 (le m\^eme code est utilis\'e), mais ces JobIds sont 
   conserv\'es en interne comme si vous les aviez saisis manuellement. 
   Vous pouvez alors faire le choix 11 pour restaurer un ou plusieurs 
   r\'epertoires.
   
\item Le choix 10 est le m\^eme que le 9, sauf qu'il vous permet d'entrer 
   une date butoir (comme pour le choix 6) pour la s\'election des JobIds. 
   Ces JobIds sont conserv\'es en interne comme si vous les aviez saisis manuellement.
   
\index[general]{Restaurer des r\'epertoires}
\item Le choix 11 vous permet d'entrer une liste de JobIds \`a partir de 
   laquelle vous pouvez s\'electionner les r\'epertoires \`a restaurer. La liste de 
   JobIds peut avoir \'et\'e \'etablie pr\'ec\'edemment \`a l'aide des choix 9 ou 10 
   du menu. Vous pouvez alors entrer le chemin absolu d'un r\'epertoire, ou 
   un nom de fichier pr\'efix\'e d'un signe "moins" (\lt{}) contenant la liste 
   des r\'epertoires \`a restaurer. Tous les fichiers des r\'epertoires s\'electionn\'es 
   seront restaur\'es, mais pas les sous-r\'epertoires, \`a moins que vous ne les 
   sp\'ecifiiez explicitement. 
   
\item  Le choix 12 vous permet d'abandonner la restauration.
\end{itemize}

A titre d'exemple, supposons que nous s\'electionnions l'option 5 (restaurer \`a 
l'\'etat le plus r\'ecent). Bacula vous demande alors le client d\'esir\'e ce qui, 
sur mon syst\`eme, se manifeste ainsi :

\footnotesize
\begin{verbatim}
Defined clients:
     1: Rufus
     2: Matou
     3: Polymatou
     4: Minimatou
     5: Minou
     6: MatouVerify
     7: PmatouVerify
     8: RufusVerify
     9: Watchdog
Select Client (File daemon) resource (1-9):
     
\end{verbatim}
\normalsize

Si vous n'avez qu'un client, il est automatiquement s\'electionn\'e. Dans le cas 
pr\'esent, j'entre {\bf Rufus} pour s\'electionner ce client. Bacula a 
maintenant conna\^itre le FileSet \`a restaurer, aussi il affiche :

\footnotesize
\begin{verbatim}
The defined FileSet resources are:
     1: Full Set
     2: Kerns Files
Select FileSet resource (1-2):
     
\end{verbatim}
\normalsize

J'opte pour le choix 1, ma sauvegarde full. En principe, vous n'aurez qu'un 
FileSet pour chaque job, et si vos machines de ressemblent (m\^emes syst\`emes), 
vous pouvez n'avoir qu'un seul FileSet pour tous vos clients.

A ce stade, Bacula d\'etient toutes les informations dont il a besoin pour 
trouver le jeu de sauvegardes le plus r\'ecent. Il va maintenant interroger le 
cataloguie, ce qui peut prendre un peu de temps, et afficher quelque chose 
comme :

\footnotesize
\begin{verbatim}
+-------+------+----------+-------------+-------------+------+-------+----------
--+
| JobId | Levl | JobFiles | StartTime   | VolumeName  | File | SesId |
VolSesTime |
+-------+------+----------+-------------+-------------+------+-------+----------
--+
| 1,792 | F    |  128,374 | 08-03 01:58 | DLT-19Jul02 |   67 |    18 |
1028042998 |
| 1,792 | F    |  128,374 | 08-03 01:58 | DLT-04Aug02 |    0 |    18 |
1028042998 |
| 1,797 | I    |      254 | 08-04 13:53 | DLT-04Aug02 |    5 |    23 |
1028042998 |
| 1,798 | I    |       15 | 08-05 01:05 | DLT-04Aug02 |    6 |    24 |
1028042998 |
+-------+------+----------+-------------+-------------+------+-------+----------
--+
You have selected the following JobId: 1792,1792,1797
Building directory tree for JobId 1792 ...
Building directory tree for JobId 1797 ...
Building directory tree for JobId 1798 ...
cwd is: /
$
\end{verbatim}
\normalsize

(Certaines colonnes sont tromqu\'ees pour des n\'ecessit\'es de mise en page).

Selon le nombre de {\bf JobFiles} pour chaque JobId, la construction de 
l'arborescence peut prendre un certain temps. Si vous constatez que tous les 
JobFiles sont \`a z\'ero, vos fichiers ont probalement \'et\'e \'elagu\'es et vous ne 
pourrez pas s\'electionner les fichiers individuellement : vous devrez 
restaurer tout ou rien.

Dans notre exemple, Bacula a trouv\'e quatre jobs qui comprennent la 
sauvegarde la plus r\'ecente du client et du FileSet sp\'ecifi\'es. Deux des jobs 
ont le m\^eme JobId car le job a \'ecrit sur deux volumes diff\'erents. Le 
troisi\`eme est une incr\'ementale qui n'a sauvegard\'e que 254 fichier sur les 
128 374 de la full. Le quatri\`eme est aussi une incr\'ementale, et n'a sauvegard\'e 
que 15 fichiers. 

Maintenant Bacula ins\`ere ces jobs dans l'arborescence, sans en marquer aucun 
pour restauration par d\'efaut. Il vous indique le nombre de fichiers dans 
l'arbre, et vous informe que le r\'epertoire de travail courant ({\bf cwd}) est 
/. Finalement, Bacula vous invite avec le signe (\$) \`a saisir des commandes 
pour vous d\'eplacer dans l'arborescence, et s\'electionner des fichiers.

Si vous voulez que tous les fichiers de l'arbre soient marqu\'es pour 
restauration \`a sa construction, tapez {\bf restore all}.

Plut\^ot que de choisir l'option 5 du premier menu (s\'electionner la 
sauvegarde la plus r\'ecente pour un client), si nous avions choisi l'option 3 
(Entrer une liste de JobIds \`a s\'electionner), et si nous avions saisi 
{\bf 1792,1797,1798}, nous serions arriv\'es au m\^eme point. 
             
Il faut noter un point si vous saisissez manuellement les JobIds : vous devez 
les entrer dans l'ordre o\`u ils ont \'et\'e ex\'ecut\'es (en g\'en\'eral, l'ordre croissant. 
Si vous les sasissez dans un ordre diff\'erent, vous courrez le risque de ne pas 
version la plus r\'ecente d'un fichier sauvegard\'e plusieurs fois si celui-ci a \'et\'e 
sauvegard\'e dans plusieurs jobs.

Entre vos JobIds directement peut aussi vous permettre de restaurer depuis 
un job qui a \'ecrit des donn\'ees sur les volumes mais qui s'est termin\'e en erreur.

Dans le mode s\'election de fichiers, vous pouvez utiliser {\bf help} ou une 
question (?) pour produire un r\'esum\'e des commandes disponibles :

\footnotesize
\begin{verbatim}
 Command    Description
  =======    ===========
  cd         change current directory
  count      count marked files in and below the cd
  dir        long list current directory, wildcards allowed
  done       leave file selection mode
  estimate   estimate restore size
  exit       same as done command
  find       find files, wildcards allowed
  help       print help
  ls         list current directory, wildcards allowed
  lsmark     list the marked files in and below the cd
  mark       mark dir/file to be restored recursively in dirs
  markdir    mark directory name to be restored (no files)
  pwd        print current working directory
  unmark     unmark dir/file to be restored recursively in dir
  unmarkdir  unmark directory name only no recursion
  quit       quit and do not do restore
  ?          print help
\end{verbatim}
\normalsize

Par d\'efaut, aucun fichier n'est s\'electionn\'e pour restauration (sauf si vous  
avez ajout\'e {\bf all} \`a la ligne de commande). Si, \`a ce stade, vous voulez 
tout restaurer, vous devriez saisir {\bf mark *}, puis {\bf done}, Bacula 
\'ecrira alors les donn\'ees bootstrap dans un fichier et sollicitera votre 
approbation pour d\'emarrer la restauration.

Si vous n'utilisez pas {\bf mark *}, vous commencez avec une s\'election vide. 
Vous pouvez simplement regarder et marquer ({\bf mark}) les fichiers et/ou 
r\'epertoires qui vous int\'eressent. Il est ais\'e de commettre une erreur dans ces 
op\'erations, et la gestion des erreurs dans Bacula n'est pas parfaite, aussi 
contr\^olez votre travail avec la commande {\bf ls} ou {\bf dir} pour voir 
quels fichiers ont \'et\'e s\'electionn\'es. Les fichiers s\'electionn\'es sont pr\'ec\'ed\'es 
d'une ast\'erisque.

Pour contr\^oler ce qui est marqu\'e et ce qui ne l'est pas utilisez la commande 
{\bf count} qui affiche :

\footnotesize
\begin{verbatim}
128401 total files. 128401 marked to be restored.
     
\end{verbatim}
\normalsize

Chacune des commandes ci-dessus sera expliqu\'e plus en d\'etail dans la 
prochaine section. Poursuivons avec notre exemple, en validant la restauration de 
tous les fichiers. En saisissant {\bf done}, Bacula affiche :

\footnotesize
\begin{verbatim}
Bootstrap records written to /home/kern/bacula/working/restore.bsr
The restore job will require the following Volumes:
   
   DLT-19Jul02
   DLT-04Aug02
128401 files selected to restore.
Run Restore job
JobName:    kernsrestore
Bootstrap:  /home/kern/bacula/working/restore.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Kerns Files
Client:     Rufus
Storage:    SDT-10000
JobId:      *None*
OK to run? (yes/mod/no):
    
\end{verbatim}
\normalsize

Examinez chaque \'el\'ement attentivement pour vous assurer que tout est 
conforme \`a ce que vous souhaitez. En particulier, v\'erifiez la ligne {\bf where}, 
qui vous indique dans quelle partie du syst\`eme de fichiers vos donn\'ees 
seront restaur\'ees, et quel client va les recevoir (par d\'efaut, les 
restaurations ont lieu sur le client d'origine). Ces param\`etres n'auront pas 
forc\'ement les bonnes valeurs, mais vous pouvez les modifier \`a l'aide 
de la commande {\bf mod} et en vous laissant guider par l'invite de la 
console.

L'affichage ci-dessus suppose que vous ayez d\'efini une ressource Job de type 
{\bf restore} dans le fichier de configuration de votre Director. en 
principe, vous n'en n'aurez besoin que d'une, car, par nature, une 
restauration est une op\'eration essentiellement manuelle. A l'aide de la 
Console, vous pourrez modifier le job Restore pour faire ce que vous voulez 
qu'il fasse.

Un exemple de ressource Job de type restore est donn\'e plus bas.

Pour en revenir \`a notre exemple, en plus de v\'erifier le client, il est sage 
de v\'erifier que le p\'eriph\'erique de stockage choisi par Bacula est le bon. 
Bien que le FileSet soit pr\'esent\'e, il est en fait ignor\'e dans la restauration. 
Le processus de restauration choisit ses fichiers en lisant le fichier 
{\bf bootstrap}, et restaure tous les fichiers associ\'es au JobId consid\'er\'e 
si ce fichier n'est pas sp\'ecifi\'e. 

Enfin, avant de lancer la restauration, notez que le lieu par d\'efaut pour les 
fichiers restaur\'es n'est pas leur emplacement d'origine mais le r\'epertoire 
{\bf /tmp/bacula-restores}. Vous pouvez modifier cette valeur par d\'efaut dans 
le fichier de configuration du Director, ou avec l'option {\bf mod}. Si vous 
voulez restaurer les fichiers \`a leurs emplacements d'origine, modifiez l'option 
{\bf where} : sp\'ecifiez la racine (\bf /} ou rien du tout.

Si vous entrez maintenant {\bf yes}, Bacula lance la restauration. le Storage 
Daemon va d'abord requ\'erir le volume {\bf DLT-19Jul02}, puis le {\bf DLT-04Aug02} 
une fois qu'il aura extrait les fichiers requis du premier.

\subsection*{S\'electionner des fichiers par leurs noms}
\index[general]{S\'electionner des fichiers par leurs noms}
\index[general]{Noms de fichiers!S\'electionner des fichiers par leurs}
\addcontentsline{toc}{subsection}{S\'electionner des fichiers par leurs noms}

Si vous n'avez qu'un petit nombre de fichiers \`a restaurer dont vous connaissez 
les noms, vous pouvez, aux choix, placer ces noms dans un fichier qui sera 
lu par Bacula, ou saisir les noms un par un. Les noms de fichier doivent inclure 
le chemin absolu. Les caract\`eres jokers ne peuvent \^etre utilis\'es.

Pour saisir la liste, choisissez l'option 7 dans le menu de la commande {\bf restore} :

\footnotesize
\begin{verbatim}
To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Cancel
Select item:  (1-12):
\end{verbatim}
\normalsize

Vous \^etes alors invit\'e \`a pr\'eciser le client :

\footnotesize
\begin{verbatim}
Defined Clients:
     1: Timmy
     2: Tibs
     3: Rufus
Select the Client (1-3): 3
\end{verbatim}
\normalsize

Si vous n'avez qu'un client, il est s\'electionn\'e automatiquement.
Finalement, Bacula vous demande d'entrer un nom de fichier :

\footnotesize
\begin{verbatim}
Enter filename:
\end{verbatim}
\normalsize

Vous pouvez, \`a ce stade, saisir le chemin absolu et le nom du fichier :

\footnotesize
\begin{verbatim}
Enter filename: /home/kern/bacula/k/Makefile.in
Enter filename:
\end{verbatim}
\normalsize

Si Bacula ne peut en trouver aucune copie, il affiche ce qui suit :

\footnotesize
\begin{verbatim}
Enter filename: junk filename
No database record found for: junk filename
Enter filename:
\end{verbatim}
\normalsize

Si vous souhaitez que Bacula r\'ecup\`ere la liste des fichiers \`a restaurer depuis 
un fichier, r\'edigez ce fichier et donnez lui un nom commen{\c c}ant par le signe 
moins (\lt{}) et saisissez-le ici. Lorsque vous avez entr\'e tous les noms de 
fichiers, validez une ligne vide. Bacula \'ecrit maintenant le fichier 
bootstrap, vous indique les cartouches qui seront utilis\'ees, et vous propose 
de valider la restauration :

\footnotesize
\begin{verbatim}
Enter filename:
Automatically selected Storage: DDS-4
Bootstrap records written to /home/kern/bacula/working/restore.bsr
The restore job will require the following Volumes:
   
   test1
1 file selected to restore.
Run Restore job
JobName:    kernsrestore
Bootstrap:  /home/kern/bacula/working/restore.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Kerns Files
Client:     Rufus
Storage:    DDS-4
When:       2003-09-11 10:20:53
Priority:   10
OK to run? (yes/mod/no):
\end{verbatim}
\normalsize

Il est possible d'automatiser la s\'election des fichiers en pla{\c c}ant votre liste 
de fichiers dans, part exemple, {\bf /tmp/file-list}, puis en utilisant la 
commande suivante :

\footnotesize
\begin{verbatim}
restore client=Rufus file=</tmp/file-list
\end{verbatim}
\normalsize

Si, en modifiant les param\`etres du job restauration, vous constatez que Bacula 
vous demande d'entrer un num\'ero de job, c'est vous n'avez pour l'instant sp\'ecifi\'e 
ni num\'ero de job, ni fichier bootstrap. Entrez simplement z\'ero pour pouvoir 
continuer et s\'electionner une autre option \`a modifier.

\label{CommandArguments}

\subsection*{Arguments de la ligne de commande}
\index[general]{Arguments!ligne de commande}
\index[general]{Arguments de la ligne de commande}
\addcontentsline{toc}{subsection}{Arguments de la ligne de commande}

Si tout ce qui pr\'ec\`ede vous a sembl\'e compliqu\'e, vous admettrez certainement 
que ce n'est vraiment pas le cas apr\`es quelques essais. Il est possible de 
faire tout ce qui vient d'\^etre vu en utilisant la ligne de commande, \`a 
l'exception de la s\'election du FileSet. Voici une telle ligne de commande :

\footnotesize
\begin{verbatim}
restore client=Rufus select current all done yes
\end{verbatim}
\normalsize

Le sp\'ecification {\bf client=Rufus} s\'electionne automatiquement le client Rufus, 
l'option {\bf current} pr\'ecise que vous voulez une restauration \`a l'\'etat le plus 
r\'ecent possible, et le  {\bf yes} \'elude l'invite finale {\bf yes/mod/no} et 
ex\'ecute directement la restauration.

Voici la liste des arguments de la ligne de commandes :

\begin{itemize}
\item {\bf all} -- s\'electionne tous les fichiers pour la restauration.
\item {\bf select} -- utilise la s\'election via l'arborescence.
\item {\bf done} -- permet de quitter le mode de s\'election dans l'arborescence.
\item {\bf current} -- s\'electionne automatiquement le jeu de sauvegardes le plus 
   r\'ecent pour le client sp\'ecifi\'e.
\item {\bf client=xxxx} -- S\'electionne le client sp\'ecifi\'e.  
\item {\bf jobid=nnn} -- Sp\'ecifie un JobId ou une liste de JobIds s\'epar\'es par des 
   virgules pour la restauration.
\item {\bf before=YYYY-MM-DD HH:MM:SS} -- Sp\'ecifie une date et un horaire. Bacula 
   s\'electionne le plus r\'ecent des jeux de sauvegardes ant\'erieurs \`a la date sp\'ecifi\'ee.
   Cette commande n'est pas tr\`es conviviale, en effet, vous devez sp\'ecifier la date 
   et l'heure en respectant exactement le mod\`ele.
\item {\bf file=filename} -- Sp\'ecifie un nom de fichier \`a restaurer. Vous devez 
   sp\'ecifier le chemin absolu vers le fichier. Si vous pr\'efixez l'entr\'ee d'un signe moins 
   (\lt{}), Bacula consid\`ere que ce fichier existe et qu'il contient la liste des 
   fichiers \`a restaurer. Les sp\'ecifications multiples {\bf file=xxx} peuvent \^etre 
   utilis\'ees en ligne de commandes.
\item {\bf jobid=nnn} -- Sp\'ecifie un JobId \`a restaurer. 
\item {\bf pool=pool-name} -- Sp\'ecifie un nom de pool \`a utiliser pour la s\'election des 
   volumes au niveau des options 5 et 6 (restauration \`a l'\'etat le plus r\'ecent et 
   restauration \`a l'\'etat le plus r\'ecent avant une date donn\'ee). Ceci vous permet d'avoir 
   plusieurs pools, dont un \'eventuellement hors site et l'autre sur place disponible pour 
   les restaurations.
\item {\bf yes} -- Ex\'ecute automatiquement la restauration sans passer par l'invite finale 
   de validation/modification surtout utile pour l'utilisation dans des scripts). 
   \end{itemize}

\subsection*{Restaurer les attributs de fichiers}
\index[general]{Attributs de fichiers!Restaurer}
\index[general]{Restaurer les attributs de fichiers}
\addcontentsline{toc}{subsection}{Restaurer les attributs de fichiers}

Selon la fa{\c c}on dont vous restaurez, vous pouvez ou non restaurer les 
attributs de fichiers \`a leur \'etat initial. Voici quelques uns des 
probl\`emes auxquels vous pouvez \^etre confront\'es, et, pour les 
restaurations sur la machine d'origine, comment les \'eviter.

\begin{itemize}
\item Vous avez sauvegard\'e des fichiers sur une machine, et les restaurez
   sur une autre qui a peut-\^etre un autre syst\`eme d'exploitation ou des 
   utilisateurs/groupes diff\'erents. Bacula fait du mieux qu'il peut dans ces 
   situations. Notez qu'utilisateurs et groupes sont sauvegard\'es au format 
   num\'erique, et qu'ils peuvent donc se r\'ef\'erer \`a d'autres utilisateurs et 
   groupes sur un autre syst\`eme.
\item Vous restaurez dans un r\'epertoire existant sur lequel portent des 
   restrictions du droit de cr\'eation. Bacula tente alors de tout r\'etablir, 
   mais sans parcourir la cha\^ine compl\`ete des r\'epertoires ni les modifier 
   durant la restauration. En fait, ce que pourra faire Bacula pour r\'etablir 
   les permissions correctement d\'epend pour beaucoup de votre syst\`eme 
   d'exploitation.
\item Vous faites une restauration recursive d'une arborescence. Dans ce cas, 
   de figure, Bacula restaure un fichier avant de restaurer l'entr\'ee de son 
   r\'epertoire parent. Dans le processus de restauration du fichier, Bacula 
   cr\'ee le r\'epertoire parent avec des permissions ouvertes et le m\^eme 
   propri\'etaire que le fichier restaur\'e. Alors, lorsque Bacula tente de restaurer 
   le r\'epertoire en lui m\^eme, il se rend compte qu'il existe d\'ej\`a (situation 
   similaire \`a la pr\'ec\'edente). Si vous avez fix\'e l'option "Replace" \`a "never" 
   lors du lancement du job, alors Bacula ne modifie pas les permissions et 
   propri\'et\'es du r\'epertoire pour s'accorder \`a ce qu'elles \'etaient lors de la 
   sauvegarde. Vous devriez aussi noter une divergence entre le nombre de fichiers 
   effectivement restaur\'es et le nombre de fichiers attendus. Si vous voulez 
   \'eviter ces inconv\'enients, fixez l'option "Replace" \`a "always", ainsi 
   Bacula sera en mesure de modifier les propri\'etaire et permissions des 
   r\'epertoires pour les ramener \`a leurs \'etats d'origine. Le nombre de 
   fichiers restaur\'es devrait cette fois \^etre identique \`a celui attendu.

\item Vous avez s\'electionn\'e un ou plusieurs fichiers d'un r\'epertoire sans 
   s\'electionner le r\'epertoire lui-m\^eme. Dans ce cas, si le r\'epertoire 
   n'existe pas d\'ej\`a, Bacula le cr\'ee avec des attributs par d\'efaut qui ne 
   seront peut-\^etre pas ceux d'origine. Si vous ne voulez pas s\'electionner 
   un r\'epertoire et tout son contenu, mais seulement quelques objets dans 
   ce r\'epertoire en les marquant individuellement, vous devriez utiliser 
   la commande {\bf markdir} pour s\'electionner un r\'epertoire de plus haut 
   niveau (un \`a la fois) si vous voulez que les entr\'ees de r\'epertoires 
   soient restaur\'ees correctement.
\end{itemize}

\label{Windows}

\subsection*{Restaurer sur Windows}
\index[general]{Restaurer sur Windows}
\index[general]{Windows!Restaurer sur}
\addcontentsline{toc}{subsection}{Restaurer sur Windows}
Sur les syst\`emes WinNT/2K/XP, Bacula restaure les fichiers avec les droits 
et permissions d'origine comme on s'y attend. Ceci est aussi v\'erifi\'e si vous 
restaurez ces fichiers vers un autre r\'epertoire (avec l'option "where") que celui 
d'origine. Cependant, si le nouveau r\'epertoire n'existe pas, le File Daemon 
tente de le cr\'eer. Dans certains cas, il n'y parvient pas. S'il y parvient, le 
r\'epertoire cr\'e\'e appartient \`a l'utilisateur qui ex\'ecute le File Daemon, c'est-\`a-dire 
SYSTEM. Dans ce cas, il se peut que vous ayez des difficult\'es pour acc\'eder aux 
fichiers fraichement restaur\'es.

Pour \'eviter ce probl\`eme, vous devriez cr\'eer le r\'epertoire alternatif avant 
de lancer la restauration. Bacula ne changera pas les attributs de ce r\'epertoire, 
du moment que ce n'est pas l'un des r\'epertoires \`a restaurer.

Le r\'epertoire de restauration par d\'efaut est {\bf /tmp/bacula-restores/}, qui devient  
{\bf /tmp/bacula-restores/e/} si vous restaurez depuis le disque {\bf E}. 
Aussi, assurez-vous que ce r\'epertoire existe avant de lancer la restauration, ou 
utilisez l'option {\bf mod} pour s\'electionner un r\'epertoire destination existant.

Certains utilisateurs ont signal\'e des probl\`emes en restaurant des fichiers 
qui participent \`a Active Directory. Ils ont aussi rapport\'e que le changement de 
l'Id utilisateur sous lequel est ex\'ecut\'e Bacula de SYSTEM en un Id d'administrateur 
du domaine r\'esout le probl\`eme.

\subsection*{Une restauration peut prendre du temps}
\index[general]{temps!Restauration}
\index[general]{Une restauration peut prendre du temps}
\addcontentsline{toc}{subsection}{Une restauration peut prendre du temps}

Restaurer des fichiers est g\'en\'eralement {\bf beaucoup} plus lent que de les 
sauvegarder, ce pour plusieurs raisons. La premi\`ere est que lors d'une sauvegarde, 
la cartouche est normalement d\'ej\`a positionn\'ee, Bacula n'a qu'\`a \'ecrire dessus. 
D'autre part, les restaurations \'etant si rares (par rapport aux sauvegardes), 
Bacula ne garde dans le catalogue que l'emplacement sur la cartouche du premier 
fichier et du premier bloc pour chaque job, et non l'emplacement de chaque fichier, 
ce qui occuperait trop de place dans le catalogue.

Bacula se place d'abord sur la bonne marque de fichier sur la cartouche, puis 
sur le bloc correct, puis lit s\'equentiellement chaque enregistrement jusqu'\`a 
trouver ceux correspondant aux fichier que vous voulez restaurer. Une fois ces 
fichiers restaur\'es, Bacula cesse de lire la cartouche.

Enfin, au lieu de simplement lire un fichier comme pour une sauvegarde, Bacula 
doit, lors d'une restauration, cr\'eer les fichiers, tandis que le syst\`eme 
d'exploitation doit, de son cot\'e, allouer de l'espace disque pour ces fichiers 
restaur\'es.

Pour toutes ces raisons, le processus de restauration est g\'en\'eralement beaucoup 
plus lent que celui de sauvegarde (une restauration peut prendre trois fois 
plus de temps que la sauvegarde).

\subsection*{Problems Restoring Files}
\index[general]{Files!Problems Restoring }
\index[general]{Problems Restoring Files }
\addcontentsline{toc}{subsection}{Problems Restoring Files}

The most frequent problems users have restoring files are error messages such
as: 

\footnotesize
\begin{verbatim}
04-Jan 00:33 z217-sd: RestoreFiles.2005-01-04_00.31.04 Error:
block.c:868 Volume data error at 20:0! Short block of 512 bytes on
device /dev/tape discarded.
\end{verbatim}
\normalsize

or 

\footnotesize
\begin{verbatim}
04-Jan 00:33 z217-sd: RestoreFiles.2005-01-04_00.31.04 Error:
block.c:264 Volume data error at 20:0! Wanted ID: "BB02", got ".".
Buffer discarded.
\end{verbatim}
\normalsize

Both these kinds of messages indicate that you were probably running your tape
drive in fixed block mode rather than variable block mode. Fixed block mode
will work with any program that reads tapes sequentially such as tar, but
Bacula repositions the tape on a block basis when restoring files because this
will speed up the restore by orders of magnitude when only a few files are being
restored. There are several ways that you can attempt to recover from this
unfortunate situation. 

Try the following things, each separately, and reset your Device resource to
what it is now after each individual test: 

\begin{enumerate}
\item Set "Block Positioning = no" in your Device resource  and try the
   restore. This is a new directive and untested. 
\item Set "Minimum Block Size = 512" and "Maximum  Block Size = 512" and
   try the restore.  If you are able to determine the block size your drive
   was previously using, you should try that size if 512 does not work.
\item Try editing the restore.bsr file at the Run xxx yes/mod/no prompt 
   before starting the restore job and remove all the VolBlock statements.
   These are what causes Bacula to reposition the tape, and where problems
   occur if you have a fixed block size set for your drive.  The VolFile
   commands also cause repositioning, but this will work regardless of the
   block size.
\item Use bextract to extract the files you want -- it reads the  Volume
   sequentially if you use the include list feature, or if you use a .bsr
   file, but remove all the VolBlock statements after the .bsr file is
   created (at the Run yes/mod/no) prompt but before you start the restore.
\end{enumerate}

\subsection*{Restore Errors}
\index[general]{Errors!Restore}
\index[general]{Restore Errors}
\addcontentsline{toc}{subsection}{Restore Errors}

There are a number of reasons why there may be restore errors or
warning messages. Some of the more common ones are:

\begin{description}

\item [file count mismatch]
  This can occur for the following reasons:
  \begin{itemize}
  \item You requested Bacula not to overwrite existing or newer
     files.
  \item A Bacula miscount of files/directories. This is an
     on-going problem due to the complications of directories,
     soft/hard link, and such.  Simply check that all the files you
     wanted were actually restored.
  \end{itemize}
\item [file size error]
   When Bacula restores files, it checks that the size of the
   restored file is the same as the file status data it saved 
   when starting the backup of the file. If the sizes do not
   agree, Bacula will print an error message. This size mismatch
   most often occurs because the file was being written as Bacula
   backed up the file. In this case, the size that Bacula
   restored will be greater than the status size.  This often
   happens with log files.

   If the restored size is smaller, then you should be concerned
   about a possible tape error and check the Bacula output as
   well as your system logs.
\end{description}



\subsection*{Example Restore Job Resource}
\index[general]{Example Restore Job Resource }
\index[general]{Resource!Example Restore Job }
\addcontentsline{toc}{subsection}{Example Restore Job Resource}

\footnotesize
\begin{verbatim}
Job {
  Name = "RestoreFiles"
  Type = Restore
  Client = Any-client
  FileSet = "Any-FileSet"
  Storage = Any-storage
  Where = /tmp/bacula-restores
  Messages = Standard
  Pool = Default
}
\end{verbatim}
\normalsize

If {\bf Where} is not specified, the default location for restoring files will
be their original locations. 
\label{Selection}

\subsection*{File Selection Commands}
\index[general]{Commands!File Selection }
\index[general]{File Selection Commands }
\addcontentsline{toc}{subsection}{File Selection Commands}

After you have selected the Jobs to be restored and Bacula has created the
in-memory directory tree, you will enter file selection mode as indicated by
the dollar sign ({\bf \$}) prompt. While in this mode, you may use the
commands listed above. The basic idea is to move up and down the in memory
directory structure with the {\bf cd} command much as you normally do on the
system. Once you are in a directory, you may select the files that you want
restored. As a default no files are marked to be restored. If you wish to
start with all files, simply enter: {\bf cd /} and {\bf mark *}. Otherwise
proceed to select the files you wish to restore by marking them with the {\bf
mark} command. The available commands are: 

\begin{description}

\item [cd]
   The {\bf cd} command changes the current directory to  the argument
   specified.
   It operates much like the Unix {\bf cd} command.  Wildcard specifications are
   not permitted.  

   Note, on Windows systems, the various drives (c:, d:, ...) are treated  like
   a
   directory within the file tree while in the file  selection mode. As a
   consequence, you must do a {\bf cd c:} or  possibly in some cases a {\bf cd
   C:} (note upper case)  to get down to the first directory.  

\item [dir]
   \index[dir]{dir }
   The {\bf dir} command is similar to the {\bf ls} command,  except that it
   prints it in long format (all details). This command  can be a bit slower
   than
   the {\bf ls} command because it must access  the catalog database for the
   detailed information for each file.  

\item [estimate]
   \index[dir]{estimate }
   The {\bf estimate} command prints a summary of  the total files in the tree,
   how many are marked to be restored, and  an estimate of the number of bytes
   to
   be restored. This can be useful  if you are short on disk space on the
   machine
   where the files will be  restored.  

\item [find]
   \index[dir]{find }
   The {\bf find} command accepts one or more arguments  and displays all files
   in the tree that match that argument. The argument  may have wildcards. It is
   somewhat similar to the Unix command  {\bf find / -name arg}.  

\item [ls]
   The {\bf ls} command produces a listing of all the files  contained in the
   current directory much like the Unix {\bf ls} command.  You may specify an
   argument containing wildcards, in which case only  those files will be
listed.
   Any file that is marked to be restored will  have its name preceded by an
   asterisk ({\bf *}). Directory names  will be terminated with a forward slash
   ({\bf /}) to distinguish them  from filenames.  

\item [lsmark]
   \index[fd]{lsmark }
   The {\bf lsmark} command is the same as the  {\bf ls} except that it will
   print only those files marked for  extraction. The other distinction is that
   it will recursively  descend into any directory selected. 

\item [mark]
   \index[dir]{mark }
   The {\bf mark} command allows you to mark files to be restored. It takes a
   single argument which is the filename  or directory name in the current
   directory to be marked for extraction.  The argument may be a wildcard
   specification, in which  case all files that match in the current directory
   are marked to be  restored. If the argument matches a directory rather than a
   file,  then the directory and all the files contained in that directory
   (recursively)  are marked to be restored. Any marked file will have its name 
   preceded with an asterisk ({\bf *}) in the output produced by the  {\bf ls}
or
   {\bf dir} commands. Note, supplying a full path on  the mark command does not
   work as expected to select a file or  directory in the current directory.
   Also, the {\bf mark} command works  on the current and lower directories but
   does not touch higher level  directories.  

   After executing the {\bf mark} command, it will print a brief summary:  

\footnotesize
\begin{verbatim}
    No files marked.
    
\end{verbatim}
\normalsize

   If no files were marked, or:  

\footnotesize
\begin{verbatim}
    nn files marked.
    
\end{verbatim}
\normalsize

   if some files are marked.  

\item [unmark]
   \index[dir]{unmark }
   The {\bf unmark} is identical to the {\bf mark}  command, except that it
   unmarks the specified file or files so that  they will not be restored. Note:
   the {\bf unmark} command works from  the current directory, so it does not
   unmark any files at a higher  level. First do a {\bf cd /} before the {\bf
   unmark *} command if  you want to unmark everything.  

\item [pwd]
   \index[dir]{pwd }
   The {\bf pwd} command prints the current working  directory. It accepts no
   arguments.  

\item [count]
   \index[dir]{count }
   The {\bf count} command prints the total files in the  directory tree and the
   number of files marked to be restored.  

\item [done]
   \index[dir]{done }
   This command terminates file selection mode.  

\item [exit]
   \index[fd]{exit }
   This command terminates file selection mode (the same as  done).  

\item [quit]
   \index[fd]{quit }
   This command terminates the file selection and does  not run the restore
job. 


\item [help]
   \index[fd]{help }
   This command prints a summary of the commands available.  

\item [?]
   This command is the same as the {\bf help} command.  
\end{description}

\label{database_restore}
\subsection*{Restoring When Things Go Wrong}
\index[general]{Restoring When Things Go Wrong }
\index[general]{Restoring Your Database}
\index[general]{Database!Restoring}
\addcontentsline{toc}{subsection}{Restoring When Things Go Wrong}

This and the following sections will try to present a few of the kinds of
problems that can come up making restoring more difficult. I'll try to
provide a few ideas how to get out of these problem situations.
In addition to what is presented here, there is more specific information
on restoring a \ilink{Client}{restore_client} and your
\ilink{Server}{restore_server} in the \ilink{Disaster Recovery Using
Bacula}{_ChapterRescue} chapter of this manual.

\begin{description}
\item[Problem]
   My database is broken.
\item[Solution]
   For SQLite, use the vacuum command to try to fix the database. For either
   MySQL or PostgreSQL, see the vendor's documentation. They have specific tools
   that check and repair databases.

   Assuming the above does not resolve the problem, you will need to restore
   or rebuild your catalog.
\item[Problem]
   How do I restore my catalog?
\item[Solution]
   If you have backed up your database nightly (as you should) and you
   have made a bootstrap file, you can immediately load back your
   database (or the ASCII SQL output).  Make a copy of your current
   database, then re-initialize it, by running the following scripts:
\begin{verbatim}
   ./drop_bacula_tables
   ./make_bacula_tables
\end{verbatim}
   After re-initializing the database, you should be able to run 
   Bacula. If you now try to use the restore command, it will not 
   work because the database will be empty. However, you can manually
   run a restore job and specify your bootstrap file. You do so
   by entering the {bf run} command in the console and selecting the
   restore job.  If you are using the default bacula-dir.conf, this
   Job will be named {\bf RestoreFiles}. Most likely it will prompt
   you with something such as:
\footnotesize
\begin{verbatim}
Run Restore job
JobName:    RestoreFiles
Bootstrap:  /home/kern/bacula/working/restore.bsr
Where:      /tmp/bacula-restores
Replace:    always
FileSet:    Full Set
Client:     rufus-fd
Storage:    File
When:       2005-07-10 17:33:40
Catalog:    MyCatalog
Priority:   10
OK to run? (yes/mod/no): 
\end{verbatim}
\normalsize
   A number of the items will be different in your case.  What you want to
   do is: to use the mod option to change the Bootstrap to point to your
   saved bootstrap file; and to make sure all the other items such as
   Client, Storage, Catalog, and Where are correct.  The FileSet is not
   used when you specify a bootstrap file.  Once you have set all the
   correct values, run the Job and it will restore the backup of your
   database.  You will then need to follow the instructions for your
   database type to recreate the database from the ASCII backup file.

      
\item[Solution]
   If you did save your database but did not make a bootstrap file, then
   recovering the database is more difficult.  You will probably need to
   use bextract to extract the backup copy.  First you should locate the
   listing of the job report from the last catalog backup.  It has
   important information that will allow you to quickly find your database
   file.  For example, in the job report for the CatalogBackup shown below,
   the critical items are the Volume name(s), the Volume Session Id and the
   Volume Session Time.  If you know those, you can easily restore your
   Catalog.
\footnotesize
\begin{verbatim}

22-Apr 10:22 HeadMan: Start Backup JobId 7510,
Job=CatalogBackup.2005-04-22_01.10.0
22-Apr 10:23 HeadMan: Bacula 1.37.14 (21Apr05): 22-Apr-2005 10:23:06
  JobId:                  7510
  Job:                    CatalogBackup.2005-04-22_01.10.00
  Backup Level:           Full
  Client:                 Polymatou
  FileSet:                "CatalogFile" 2003-04-10 01:24:01
  Pool:                   "Default"
  Storage:                "DLTDrive"
  Start time:             22-Apr-2005 10:21:00
  End time:               22-Apr-2005 10:23:06
  FD Files Written:       1
  SD Files Written:       1
  FD Bytes Written:       210,739,395
  SD Bytes Written:       210,739,521
  Rate:                   1672.5 KB/s
  Software Compression:   None
  Volume name(s):         DLT-22Apr05
  Volume Session Id:      11
  Volume Session Time:    1114075126
  Last Volume Bytes:      1,428,240,465
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

\end{verbatim}
\normalsize
  From the above information, you can manually create a bootstrap file,
  and then follow the instructions given above for restoring your database.
  A reconstructed bootstrap file for the above backup Job would look
  like the following:
\footnotesize
\begin{verbatim}
Volume="DLT-22Apr05"
VolSessionId=11
VolSessionTime=1114075126
FileIndex=1-1
\end{verbatim}
\normalsize    
  Where we have inserted the Volume name, Volume Session Id, and Volume
  Session Time that correspond to the values in the job report.  We've also
  used a FileIndex of one, which will always be the case providing that
  there was only one file backed up in the job.
  
  The disadvantage of this bootstrap file compared to what is created when
  you ask for one to be written, is that there is no File and Block
  specified, so the restore code must search all data in the Volume to find
  the requested file.  A fully specified bootstrap file would have the File
  and Blocks specified as follows:
\footnotesize
\begin{verbatim}
Volume="DLT-22Apr05"
VolSessionId=11
VolSessionTime=1114075126
VolFile=118-118
VolBlock=0-4053
FileIndex=1-1
\end{verbatim}
\normalsize

\item [Problem]
   I try to restore the last known good full backup by specifying
   item 3 on the restore menu then the JobId to restore.  Bacula 
   then reports:

\footnotesize
\begin{verbatim}
   1 Job 0 Files
\end{verbatim}
\normalsize
   and restores nothing.
\item[Solution]
   Most likely the File records were pruned from the database either due
   to the File Retention period expiring or by explicitly purging the
   Job. By using the "llist jobid=nn" command, you can obtain all the
   important information about the job:
\footnotesize
\begin{verbatim}
llist jobid=120
           JobId: 120
             Job: save.2005-12-05_18.27.33
        Job.Name: save
     PurgedFiles: 0
            Type: B
           Level: F
    Job.ClientId: 1
     Client.Name: Rufus
       JobStatus: T
       SchedTime: 2005-12-05 18:27:32
       StartTime: 2005-12-05 18:27:35
         EndTime: 2005-12-05 18:27:37
        JobTDate: 1133803657
    VolSessionId: 1
  VolSessionTime: 1133803624
        JobFiles: 236
       JobErrors: 0
 JobMissingFiles: 0
      Job.PoolId: 4
       Pool.Name: Full
   Job.FileSetId: 1
 FileSet.FileSet: BackupSet
\end{verbatim}
\normalsize

   Then you can find the Volume(s) used by doing:
\footnotesize
\begin{verbatim}
sql
select VolumeName from JobMedia,Media where JobId=1 and JobMedia.MediaId=Media.MediaId;
\end{verbatim}
\normalsize
   Finally, you can create a bootstrap file as described in the previous
   problem above using this information.

   If you are using Bacula version 1.38.0 or greater, when you select
   item 3 from the menu and enter the JobId, it will ask you if
   you would like to restore all the files in the job, and it will
   collect the above information and write the bootstrap file for
   you.

\item [Problem]
  You don't have a bootstrap file, and you don't have the Job report for
  the backup of your database, but you did backup the database, and you
  know the Volume to which it was backed up.
  
\item [Solution]
  Use {\bf bls} to indicate where it is on the tape. For example:

\footnotesize
\begin{verbatim}
./bls -j -V DLT-22Apr05 /dev/nst0
\end{verbatim}
\normalsize
  Might produce the following output:
\footnotesize
\begin{verbatim}
bls: butil.c:258 Using device: "/dev/nst0" for reading.
21-Jul 18:34 bls: Ready to read from volume "DLT-22Apr05" on device "DLTDrive"
(/dev/nst0).
Volume Record: File:blk=0:0 SessId=11 SessTime=1114075126 JobId=0 DataLen=164
...
Begin Job Session Record: File:blk=118:0 SessId=11 SessTime=1114075126
JobId=7510
   Job=CatalogBackup.2005-04-22_01.10.0 Date=22-Apr-2005 10:21:00 Level=F Type=B
End Job Session Record: File:blk=118:4053 SessId=11 SessTime=1114075126
JobId=7510
   Date=22-Apr-2005 10:23:06 Level=F Type=B Files=1 Bytes=210,739,395 Errors=0
Status=T
...
21-Jul 18:34 bls: End of Volume at file 201 on device "DLTDrive" (/dev/nst0),
Volume "DLT-22Apr05"
21-Jul 18:34 bls: End of all volumes.
\end{verbatim}
\normalsize
  Of course, there will be many more records printed, but we have indicated
  the essential lines of output. From the information on the Begin Job and End 
  Job Session Records, you can reconstruct a bootstrap file such as the one
  shown above.

\item[Problem]
  How can I find where a file is stored.
\item[Solution]
  Normally, it is not necessary, you just use the {\bf restore} command to
  restore the most recently saved version (menu option 5), or a version
  saved before a given date (menu option 8).  If you know the JobId of the
  job in which it was saved, you can use menu option 3 to enter that JobId.

  If you would like to know the JobId where a file was saved, select
  restore menu option 2.

  You can also use the {\bf query} command to find information such as: 
\footnotesize
\begin{verbatim}
*query
Available queries:
     1: List Job totals:
     2: List up to 20 places where a File is saved regardless of the directory:
     3: List where the most recent copies of a file are saved:
     4: List last 20 Full Backups for a Client:
     5: List all backups for a Client after a specified time
     6: List all backups for a Client
     7: List Volume Attributes for a selected Volume:
     8: List Volumes used by selected JobId:
     9: List Volumes to Restore All Files:
    10: List Pool Attributes for a selected Pool:
    11: List total files/bytes by Job:
    12: List total files/bytes by Volume:
    13: List Files for a selected JobId:
    14: List Jobs stored in a selected MediaId:
    15: List Jobs stored for a given Volume name:
Choose a query (1-15):
\end{verbatim}
\normalsize


\end{description}
