%%
%%

\chapter{Die Bacula Console}
\label{_ConsoleChapter}
\index[general]{Console!Bacula}
\index[general]{Bacula Console}
\index[general]{Console!Bacula}
\index[general]{Bacula Console}

Die {\bf Bacula Console} (manchmal auch die Benutzer-Schnittstelle genannt) 
ist ein Programm, dass es dem Anwender oder System Administrator erlaubt,
den Bacula-Director-Dienst im laufenden Betrieb zu bedienen.

Momentan gibt es zwei Versionen des Console-Programms: eine Shell- (TTY)
und eine GNOME GUI-Version. Beide erlauben es dem Administrator oder
autorisierten Benutzern Bacula zu steuern. Sie k\"{o}nnen sich zum Beispiel
den Status eines bestimmten Jobs oder den Inhalt des Katalogs anzeigen lassen,
sowie bestimmte Aktionen mit Tapes und Autochangern durchf\"{u}hren.

Zus\"{a}tzlich gibt es noch die bwx-Console, die auf wxWidgets aufbaut
und eine M\"{o}glichkeit bietet, den Wiederherstellungsproze{\ss} graphisch zu steuern.
Die bwx-Console befindet sich in einem fr\"{u}hen Entwicklungsstadium und
wurde leider seit einiger Zeit nicht weiterentwickelt. (Trotzdem kann sie sehr hilfreich sein.)

Da sich alle Bacula-Consolen \"{u}ber das Netzwerk mit dem Director-Dienst verbinden,
ist es nicht notwendig, dass sie auf dem selben Computer laufen.

Ein gewisses, minimales Grundwissen \"{u}ber die Console ist schon dann notwendig,
wenn Bacula auf mehr als einem Tape schreiben soll. Bacula wird n\"{a}mlich nach einem
leeren Band fragen, falls keines mehr verf\"{u}gbar ist, und erst nach dem mounten
eines neuen Tapes mittels der Console, wird Bacula weiterarbeiten k\"{o}nnen.

\section{Console Konfiguration}
\index[general]{Console Konfiguration}
\index[general]{Konfiguration!Console}
\index[general]{Console Konfiguration}
\index[general]{Konfiguration!Console}

Wenn Sie die Bacula-Console starten, liest sie ihre Standard-Konfigurations-Datei
namens {\bf bconsole.conf}, bzw. {\bf bgnome-console.conf} f\"{u}r die GNOME-Console, ein.
Mittels der Kommandozeilen-Option {\bf {-}c} k\"{o}nnen Sie aber auch eine eigene Konfigurations-
Datei angeben. Im einfachsten Fall enth\"{a}llt diese Datei nur den Namen und die
Adresse des Director-Dienstes sowie das Passwort, dass f\"{u}r die Verbindung zum
Director-Dienst ben\"{o}tigt wird. F\"{u}r weitere Informationen zu dieser Datei,
lesen Sie bitte das Kapitel \"{u}ber die
\ilink{Console-Konfiguration-Datei}{ConsoleConfChapter} in diesem Handbuch.

\section{Benutzung des Console-Programms}
\index[general]{Benutzung des Console-Programms}
\index[general]{Programm!Benutzung des Console-}
\index[general]{Benutzung des Console-Programms}
\index[general]{Programm!Benutzung des Console-}

Das Console-Programm kann mit den folgenden Optionen gestartet werden:
\footnotesize
\begin{verbatim}
Usage: bconsole [-s] [-c Konfigurations-Datei] [-d Debug-Level]
       -c <Datei>  gibt die zu verwendene Konfigurations-Datei an
       -dnn        setzt den Debug-Level auf nn
       -n          kein conio
       -s          keine Signale (*)
       -t          test - liest die Konfigurations-Datei und beendet sich dann
       -?          gibt diese Hilfe aus.
\end{verbatim}
\normalsize

(*) \elink{Signale}{http://de.wikipedia.org/wiki/Signal\_\%28Computer\%29}

Nach dem Start des Console-Programms zeigt es durch sein Prompt (*) an,
dass es auf Benutzereingaben wartet. (in der GNOME-Console gibt es kein Prompt,
geben Sie die Befehle bitte einfach in der Textbox unten im Fenster ein.)
Sie k\"{o}nnen in jeder Console einfach nur das Kommando eingeben, wenn weitere Parameter
erforderlich sind, wird das Programm Sie danach fragen. Alternativ k\"{o}nnen Sie
nat\"{u}rlich auch das komplette Kommando mit allen ben\"{o}tigten Parametern eingeben
und ausf\"{u}hren. Das normale Befehlsformat ist dieses:

\footnotesize
\begin{verbatim}
 <Kommando> <Parameter1>[=<Argument1>] <Parameter2>[=<Argument2>] ...
\end{verbatim}
\normalsize

wobei {\bf Kommando} einer der unten aufgef\"{u}hrten Console-Befehle
und {\bf Parameter} eines der unten aufgelisteten Schl\"{u}sselw\"{o}rter ist,
dem dann meistens ein {\bf Argument} folgt. Alle Befehle k\"{o}nnen in der
k\"{u}rzesten eindeutigen Form eingegeben werden. Falls zwei Befehle mit identischen
Buchstaben anfangen, wird der ausgef\"{u}hrt, der in der Ausgabe des {\bf help}-Kommandos
am weitesten oben steht. Wenn Sie das andere Kommando ausf\"{u}hren m\"{o}chten m\"{u}ssen Sie
dementsprechend mehr Buchstaben eingeben, um es eindeutig anzugeben. Keiner der
Parameter darf abgek\"{u}rzt werden.

Ein Beispiel:

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

zeigt alle gesicherten Dateien mit der JobID 23 an.

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

zeigt alle Pool-Konfigurations-Eintr\"{a}ge an. 

Die maximale L\"{a}nge der eingegebenen Befehle, mit Parametern, ist 511 Zeichen.
Falls Sie die Console \"{u}ber ein Script ansprechen, denken Sie bitte daran,
dass Sie dieses Limit nicht \"{u}berschreiten.

\section{Beenden des Console-Programms}
\index[general]{Programm!Beenden des Console-}
\index[general]{Beenden des Console-Programms}
\index[general]{Programm!Beenden des Console-}
\index[general]{Beenden des Console-Programms}

Normalerweise beenden Sie das Console-Programm durch die Eingabe von {\bf quit} oder {\bf exit}.
Allerdings wartet die Console bis der Director-Dienst das Kommando best\"{a}tigt. Wenn der
Director bereits ein l\"{a}nger laufendes Kommando ausf\"{u}hrt, kann es sein, dass das Beenden
der Console einen Moment dauert. Falls Sie die Console sofort verlassen wollen, k\"{o}nnen Sie
in dem Fall das Kommando {\bf .quit} verwenden.

Momentan gibt es keinen Weg ein laufendes Kommando nach dem Starten abzubrechen (z.B. mit STRG+C).
Allerdings k\"{o}nnen Sie jederzeit, wenn die Console Sie nach einer weiteren Eingabe fragt,
das aktuelle Kommando beenden, indem Sie einen Punkt {\bf .} eingeben. Nach der Eingabe des Punktes,
werden Sie automatisch zum Hauptprompt oder bei verschachtelten Abfragen zum passenden letzten Prompt
zur\"{u}ckgeleitet. Bei einigen Eingaben, wie zum Beispiel der Frage nach einem Volume-Namen, wird
der Punkt als Eingabe gewertet und Sie haben beim n\"{a}chsten Prompt die M\"{o}glichkeit,
das Kommando abzubrechen.

\label{keywords}
\section{Alphabetische Liste der Console-Schl\"{u}sselw\"{o}rter}
\index[general]{Schl\"{u}sselw\"{o}rter!Alphabetische Liste der Console}
\index[general]{Alphabetische Liste der Console-Schl\"{u}sselw\"{o}rter}
\index[general]{Schl\"{u}sselw\"{o}rter!Alphabetische Liste der Console}
\index[general]{Alphabetische Liste der Console-Schl\"{u}sselw\"{o}rter}
Wenn es nicht anders angegeben ist, ben\"{o}tigt jedes der folgenden Schl\"{u}sselw\"{o}rter
(Parameter der Console-Befehle) ein Argument, welches dem Schl\"{u}sselwort,
getrennt durch ein Gleichheitszeichen, folgt.
Ein Beispiel:
\begin{verbatim}
jobid=536
\end{verbatim}

Bitte beachten Sie, dass diese Liste durch die st\"{a}ndig weitergehende
Entwicklung eventuell weder komplett, noch in der richtigen alphabetischen
Reihenfolge sein kann.

\begin{description}
\item [all]
  Parameter des status und show-Kommandos,
  dadurch werden alle Komponenten oder Eintr\"{a}ge ausgew\"{a}hlt
\item [allfrompool]
  Parameter des update-Kommandos,
  gibt an das alle Volumes des (im Parameter pool angegebenen) Pools
  aktualisiert werden sollen.
\item [allfrompools]
  Parameter des update-Kommandos,
  gibt an das alle Volumes aller Pools aktualisiert werden sollen.
\item [before]
  Parameter des restore-Kommandos.
\item [bootstrap]
  Parameter des restore-Kommandos.
\item [catalog]
  im use-Kommando erlaubt,
  um den zu benutzenden Katalog auszuw\"{a}hlen
\item [catalogs]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [client | fd]
\item [clients]
  Parameter des show, list und llist-Kommandos,
  bezeichnet alle Clients. Ben\"{o}tigt keine Argumente.
\item [counters]
  im show-Kommando erlaubt.
  Ben\"{o}tigt keine Argumente.
\item [current]
  Parameter des restore-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [days]
  definiert die Anzahl der Tage, die das "`list nextvol"'-Kommando
  in Betracht ziehen soll. Der Parameter days kann auch im Kommando
  "`status director"' verwendet werden, um die geplanten Jobs f\"{u}r die
  angegebene Anzahl Tage zu zeigen.
\item [devices]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [director | dir]
\item [directors]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [directory]
  Parameter des restore-Kommandos.
  Das Argument gibt das wiederherzustellende Verzeichnis an.
\item [enabled]
  Dieser Parameter kann bei den Kommandos "`update volumes"' und "`update slots"'
  verwendet werden. Das Argument kann yes, true, no, false, archived, 0,1 oder 2 sein.
  0 ist identisch mit no oder false, 1 mit yes oder true und 2 mit archived.
  Archived Volumes werden weder benutzt noch automatisch aus dem Katalog gel\"{o}scht.
  Volumes die nicht enabled sind, werden nicht f\"{u}r das Backup oder die Wiederherstellung benutzt.
\item [done]
  wird im restore-Kommando benutzt.
  Ben\"{o}tigt keine Argumente.
\item [file]
  Parameter des restore-Kommandos.
\item [files]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [fileset]
\item [filesets]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [help]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [jobs]
  Parameter des show, list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [jobmedia]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [jobtotals]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [jobid]
  Parameter des list und llist-Kommandos.
  Die jobid ist die numerische Jobid, die im Job-Report angezeigt wird.
  Sie ist der Index f\"{u}r die Datenbankeintr\"{a}ge des entsprechenden Jobs.
  Da sie f\"{u}r alle in der Datenbank existierenden Jobs einzigartig ist,
  kann sie erst wiederverwendet werden, wenn der vorherige Job mit dieser Jobid
  aus der Datenbank gel\"{o}scht wurde.
\item [job | jobname]
  Parameter des list und llist-Kommandos.
  Der Job oder JobName entspricht dem Namen den Sie im Job-Eintr\"{a}g
  angegeben haben, somit bezieht er sich auf alle Jobs dieses Namens,
  die jemals gelaufen sind und deren Eintr\"{a}ge noch im Katalog existieren.
\item [level]
\item [listing]
  Parameter des estimate-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [limit]
\item [messages]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [media]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [nextvol | nextvolume]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [on]
  Ben\"{o}tigt keine Argumente.
\item [off]
  Ben\"{o}tigt keine Argumente.
\item [pool]
\item [pools]
  Parameter des show, list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [restart]
  Parameter des python-Kommandos,
  dadurch wird der python-Interpreter neu gestartet. Ben\"{o}tigt keine Argumente.
\item [select]
  Parameter des restore-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [storages]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [schedules]
  Parameter des show-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [sd | store | storage]
\item [ujobid]
  Parameter des list-Kommandos.
  Die ujobid ist eine M\"{o}glichkeit einen Job eindeutig zu identifizieren.
  Momentan besteht die ujobid aus dem JobNamen und der Uhrzeit wann der Job gelaufen ist.
\item [volume]
\item [volumes]
  Parameter des list und llist-Kommandos.
  Ben\"{o}tigt keine Argumente.
\item [where]
  Parameter des restore-Kommandos.
\item [yes]
  Parameter des restore-Kommandos.
  Ben\"{o}tigt keine Argumente.
\end{description}

\label{list}
\section{Alphabetische Liste der Console-Kommandos}
\index[general]{Kommandos!Alphabetische Liste der Console-}
\index[general]{Alphabetische Liste der Console-Kommandos}
\index[general]{Kommandos!Alphabetische Liste der Console-}
\index[general]{Alphabetische Liste der Console-Kommandos}

Die folgenden Kommandos sind derzeit verf\"{u}gbar:

\begin{description}
\item [{add [pool=\lt{}pool-name\gt{} storage=\lt{}storage\gt{}
   jobid=\lt{}JobId\gt{}]} ]
   \index[general]{add}
   Das add-Kommando wird benutzt um Volumes zu einem bestehenden Pool
   hinzuzuf\"{u}gen. Dabei wird der Volume-Eintrag in der Datenbank erzeugt
   und das Volume dem Pool zugeordnet. Allerdings erfolgt kein physikalischer Zugriff
   auf das Volume. Nach dem hinzuf\"{u}gen zu einem Pool geht Bacula davon
   aus, dass das Volume wirklich existiert und auch bereits gelabelt ist.
   Dieses Kommando wird normalerweise nicht benutzt, da Bacula die Volumes
   automatisch beim labeln einem Pool hinzuf\"{u}gt. Allerdings ist es hilfreich,
   falls Sie ein Volume aus dem Katalog gel\"{o}scht haben und es sp\"{a}ter wieder
   hinzuf\"{u}gen wollen.

   Typischerweise wird das label-Kommando anstelle des add-Kommandos benutzt, da
   es au{\ss}er dem labeln des physikalischen Volumes, die identischen Schritte
   wie das add-Kommando ausf\"{u}hrt. Das add-Kommando \"{a}ndert nur die Katalog-Eintr\"{a}ge
   und nicht die physikalischen Volumes. Die physikalischen Volumes m\"{u}ssen
   vorhanden und gelabelt sein (normalerweise mit dem label-Kommando). Trotzdem
   kann das add-Kommando sinnvoll sein, wenn Sie zum Beispiel eine bestimmte Anzahl
   von Volumes einem Pool hinzuf\"{u}gen wollen, wobei die Volumes erst zu einem
   sp\"{a}teren Zeitpunkt gelabelt werden. Auch um ein Volume eines anderen Bacula-Systems
   (bzw. anderen Director-Dienstes) zu importieren, kann das add-Kommando benutzt werden.
   Die erlaubten Zeichen f\"{u}r einen Volume-Namen finden Sie weiter unten
   in der Beschreibung des label-Kommandos.

\item [autodisplay on/off]
   \index[general]{autodisplay on/off}
   Das autodisplay-Kommando kennt zwei Parameter: {\bf on} und {\bf off},
   wodurch die automatische Anzeige von Nachrichten in der Console entsprechend
   ein- oder ausgeschaltet wird. Der Standardwert ist {\bf off}, was bedeutet, dass
   Sie \"{u}ber neue Meldungen benachrichtigt werden, sie aber nicht automatisch
   angezeigt werden. In der GNOME-Console ist das automatische Anzeigen dagegen
   standardm\"{a}{\ss}ig aktiviert, d.h. neue Meldungen werden automatisch
   ausgegeben, wenn sie vom Director-Dienst empfangen wurden (typischerweise innerhalb von
   ca. 5 Sekunden nachdem sie generiert wurden).

   Wenn autodisplay auf off steht, m\"{u}ssen Sie neue Nachrichten mit dem
   {\bf messages}-Kommando abrufen, um sie sich anzeigen zu lassen.
   Wenn autodisplay auf on steht, werden die Nachrichten angezeigt, sobald die Console sie
   empfangen hat.

\item [automount on/off]
   \index[general]{automount on/off}
   Das automount-Kommando kennt zwei Parameter: {\bf on} und {\bf off},
   die entsprechend das automatische mounten nach dem labeln ({\bf label}-Kommando)
   an- oder ausschalten. Der Standardwert ist on. Wenn automount ausgeschaltet ist,
   m\"{u}ssen Sie nach dem labeln eines Volumes dieses explizit mounten ({\bf mount}-Kommando),
   um es benutzen zu k\"{o}nnen.

\item [{cancel [jobid=\lt{}number\gt{} job=\lt{}job-name\gt{} ujobid=\lt{}unique-jobid\gt{}]}]
   \index[general]{cancel jobid}
   Das cancel-Kommando wird benutzt um einen Job abzubrechen und kennt die
   Parameter {\bf jobid=nnn} oder {\bf job=xxx}, wobei jobid die numerische JobID ist
   und job der Job-Name. Wenn Sie weder job noch jobid angeben, listet die Console
   alle in Frage kommenden Jobs auf und erlaubt Ihnen aus dieser Liste den abzubrechenden
   Job auszuw\"{a}hlen.

   Wenn ein Job als abzubrechen gekennzeichnet wurde, kann es einige Zeit dauern,
   bis er tats\"{a}chlich beendet wird (normalerweise innerhalb einer Minute).
   Diese Zeit ist aber abh\"{a}ngig davon, was der Job gerade tut.

\item [{create [pool=\lt{}pool-name\gt{}]}]
   \index[general]{create pool}
   Das create-Kommando wird normalerweise nicht benutzt, da die Pool-Eintr\"{a}ge
   im Katalog automatisch angelegt werden, wenn der Director-Dienst startet und
   er seine Pool-Konfiguration aus den Konfigurations-Dateien einliest. Falls ben\"{o}tigt,
   kann mit diesem Kommando ein Pool-Eintrag in der Katalog-Datenbank erstellt werden,
   der auf einem Pool-Konfigurations-Eintrag basiert, der in der Director-Dienst-Konfiguration
   enthalten ist. Einfach gesagt \"{u}bernimmt dieses Kommando nur den Pool-Eintrag aus der
   Konfiguration in die Datenbank. Normalerweise wird diese Kommando automatisch ausgef\"{u}hrt,
   wenn der Pool zum ersten mal in einem Job-Eintrag benutzt wird. Wenn Sie dieses Kommando
   auf einem bestehenden Pool ausf\"{u}hren, wird der Katalog sofort aktualisiert und enth\"{a}lt
   dann die identische Pool-Konfiguration, wie die Konfigurations-Dateien. Nach dem Erstellen
   eines Pool in den Konfigurations-Dateien werden Sie allerdings h\"{o}chstwahrscheinlich
   das {\bf label}-Kommando benutzen, um ein oder mehrere Volumes dem neuen Pool hinzuzuf\"{u}gen
   und die entsprechenden Eintr\"{a}ge im Katalog zu erzeugen, anstatt des create-Kommandos.

   Wenn ein Job gestartet wird und Bacula bemerkt,
   dass kein passender Pool-Eintrag im Katalog vorhanden ist,
   aber in den Konfigurations-Dateien, dann wird der Pool im Katalog automatisch angelegt.
   Wenn Sie m\"{o}chten, dass der Pool-Eintrag sofort (ohne das ein Job mit diesem Pool gestartet wurde)
   im Katalog erscheint, k\"{o}nnen Sie einfach diese Kommando ausf\"{u}hren, um diesen Vorgang
   zu erzwingen.

\item [{delete [volume=\lt{}vol-name\gt{} pool=\lt{}pool-name\gt{}  job
   jobid=\lt{}id\gt{}]}]
   \index[general]{delete}
   Das delete-Kommando wird benutzt um ein Volume, einen Pool oder einen Job-Eintrag,
   sowie jeweils alle dazugeh\"{o}rigen Datenbank-Eintr\"{a}ge, aus dem Katalog zu
   entfernen. Das Kommando \"{a}ndert nur die Katalog-Datenbank, es hat keine
   Auswirkungen auf die Konfigurations-Dateien oder die Daten auf den Volumes.
   Wir empfehlen Ihnen dieses Kommando nur zu benutzen, wenn Sie wirklich wissen was Sie tun.

   Wenn der Parameter {\bf Volume} angegeben wird, wird das entsprechende Volume aus dem Katalog
   gel\"{o}scht, wenn ein {\bf Pool} angeben wird, der entsprechende Pool und bei Angabe des Parameters
   {\bf Job} der entsprechende Job, sowie alle zu diesem Job geh\"{o}hrenden JobMedia- und
   Datei-Eintr\"{a}ge.
   Das delete-Kommando kann folgenderma{\ss}en aufgerufen werden:

\begin{verbatim}
delete pool=<pool-name>  oder
\end{verbatim}

\begin{verbatim}
delete volume=<volume-name> pool=<pool-name>  oder
\end{verbatim}

\begin{verbatim}
delete JobId=<job-id> JobId=<job-id2> ...  oder
\end{verbatim}

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

   Das erste Beispiel l\"{o}scht einen Pool-Eintrag aus der Katalog-Datenbank.
   Das zweite l\"{o}scht einen Volume-Eintrag aus dem angegebenen Pool
   und das dritte Beispiel l\"{o}scht die genannten JobID-Eintr\"{a}ge aus
   dem Katalog. Es werden die JobIDs n, m, o, p, q, r und t gel\"{o}scht,
   wobei die JobID's n, m, o ... nat\"{u}rlich Zahlen entsprechen m\"{u}ssen.
   Wie Sie sehen, kann das delete-Kommando Listen von JobIDs und auch Bereiche
   (z.B. o-r) verarbeiten.

\item [disable job\lt{}job-name\gt{}]
  \index[general]{disable}
  Das disable-Kommando erlaubt es Ihnen zu verhindern, dass ein Job
  automatisch durch den Director-Dienst ausgef\"{u}hrt wird. Wenn Sie den Director-Dienst
  neu starten, wird der Status des Jobs wieder auf den Wert gesetzt, der
  im Job-Eintrag der Director-Konfiguration eingetragen ist.

\item [enable job\lt{}job-name\gt{}]
  \index[general]{enable}
  Das enable-Kommando erlaubt es Ihnen, einen Job der durch das
  disable-Kommando aus der automatischen Job-Planung entfernt wurde,
  wieder zu aktivieren. Wenn Sie den Director-Dienst neu starten,
  wird der Status des Jobs wieder auf den Wert gesetzt, der im
  Job-Eintrag der Director-Konfiguration eingetragen ist.

\label{estimate}
\item [estimate]
   \index[general]{estimate}
   Mit dem estimate-Kommando k\"{o}nnen Sie sich anzeigen lassen, welche
   Dateien durch einen bestimmten Job gesichert werden, ohne diesen Job
   ausf\"{u}hren zu m\"{u}ssen. Standardm\"{a}{\ss}ig wird dabei ein Voll-Backup
   angenommen. Sie k\"{o}nnen das aber durch den Parameter level entsprechend anpassen,
   indem Sie zum Beispiel {\bf level=Incremental} oder {\bf level=Differential} an das
   estimate-Kommando mit \"{u}bergeben. Wenn Sie im Aufruf des Kommandos keinen Job-Name
   angegeben, wird die Console Ihnen eine Auswahlliste der m\"{o}glichen Jobs anzeigen.
   Zus\"{a}tzlich k\"{o}nnen Sie noch die Parameter Client und FileSet angeben. Nach dem
   Starten des Kommandos wird der Director-Dienst den Client kontaktieren, der daraufhin
   eine Liste der zu sichernden Dateien mit ihrer Gr\"{o}{\ss}e zur\"{u}ckgibt. Bitte beachten
   Sie, dass das estimate-Kommando nur die Anzahl der von der Datei belegten Bl\"{o}cke zur
   Bestimmung der Dateigr\"{o}{\ss}e einbezieht, so dass die Datenmenge, die das estimate-Kommando
   anzeigt, immer etwas gr\"{o}{\ss}er sein wird als das echte Backup.

   Wahlweise k\"{o}nnen Sie noch den Parameter {\bf listing} mit \"{u}bergeben,
   dann wird eine Liste aller zu sichernden Dateien ausgegeben. Abh\"{a}ngig vom FileSet
   kann diese Liste sehr lang sein und es daher einige Zeit dauern, alle Dateien anzuzeigen.
   Das estimate-Kommando kann folgenderma{\ss}en aufgerufen werden:


\begin{verbatim}
estimate job=<job-name> listing client=<client-name> 
       fileset=<fileset-name> level=<level-name>  
\end{verbatim}

   die Angabe des Jobs ist ausreichend, aber Sie k\"{o}nnen durch Angabe
   des Clients, FileSets und/oder des Backup-Levels die entsprechenden Werte \"{u}berschreiben.

Zum Beispiel k\"{o}nnen Sie folgendes eingeben:

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

   durch das erste Kommando wird die Ausgabe der Console in die Datei
   {\bf /tmp/listing} umgeleitet. Dann wird durch das estimate-Kommando
   eine Liste aller Dateien erstellt, die beim n\"{a}chsten inkrementellen
   Backup des Jobs {\bf NightlySave} gesichert werden. Die Console gibt dabei keine
   Meldungen aus, da die Ausgabe ja auf die Datei /tmp/listing zeigt. Durch
   das dritte Kommando @output wird die Umleitung der Ausgabe wieder aufgehoben.
   Beachten Sie bitte, dass die angezeigten Bytes in der Ausgabe des estimate-Kommandos
   \"{u}ber die Angabe der Dateigr\"{o}{\ss}e im Verzeichnis-Eintrag bestimmt wird.
   Das kann zu gro{\ss}en Abweichungen bei der ermittelten Backup-Gr\"{o}{\ss}e f\"{u}hren,
   falls im FileSet \elink{sparse}{http://de.wikipedia.org/wiki/Sparse-Datei}-Dateien
   vorhanden sind. sparse-Dateien finden sich oft auf 64-Bit-Maschinen, wo sie f\"{u}r
   bestimmte Systemdateien benutzt werden. Die angezeigten Bytes sind die Gesammtgr\"{o}{\ss}e
   der gesicherten Dateien, wenn die FileSet-Option "`sparse"' nicht gesetzt ist.
   Momentan gibt es keinen Weg, um mit dem estimate-Kommando die echte Backup-Gr\"{o}{\ss}e
   f\"{u}r ein FileSet anzuzeigen, bei dem die sparse-Option gesetzt ist.

\item [exit]
   \index[general]{exit}
   Das exit-Kommando beendet die Console.

+\item [gui]
   \index[general]{gui}
   Aktiviert den nicht-interaktiven GUI-Modus.
\begin{verbatim}
gui [on|off]
\end{verbatim}

\item [help]
   \index[general]{help}
   Das help-Kommando zeigt alle verf\"{u}gbaren Kommandos mit einer kurzen Beschreibung an.

\item [label]
   \index[general]{label}
   \index[general]{relabel}
   \index[general]{label}
   \index[general]{relabel}
   Das label-Kommando wird benutzt um physikalische Volumes zu labeln.
   Das label-Kommando kann folgenderma{\ss}en aufgerufen werden:

\begin{verbatim}
label storage=<storage-name> volume=<volume-name> slot=<slot>
\end{verbatim}

   Wenn Sie einen der Parameter storage, volume oder slot nicht angeben,
   werden Sie von der Console danach gefragt. Der Media-Typ wird automatisch
   anhand des Storage-Eintrags in der Director-Konfiguration gesetzt.
   Wenn alle ben\"{o}tigten Informationen vorliegen, kontaktiert die
   Console den angegebenen Storage-Dienst und sendet das label-Kommando.
   Wenn das labeln erfolgreich war, wird ein entsprechender Volume-Eintrag
   im passenden Pool erzeugt.

   Im Volume-Name d\"{u}rfen Buchstaben, Zahlen und folgende Sonderzeichen
   verwendet werden: Binde- ({\bf -}) und Unterstrich ({\bf \_}),
   Doppelpunkt ({\bf :}) und Punkt ({\bf .}). Alle anderen Zeichen,
   einschlie{\ss}lich des Leerzeichens, sind nicht erlaubt.
   Durch diese Einschr\"{a}nkung soll sichergestellt werden, dass
   die Volume-Namen gut lesbar sind und es nicht zu Benutzerfehlern
   aufgrund von Sonderzeichen im Namen kommt.

   Bitte beachten Sie, dass Bacula einen Ein-/Ausgabefehler meldet,
   wenn ein neues bzw. komplett leeres Volume gelabelt wird. Bacula
   versucht den ersten Block des Volumes zu lesen, um ein eventuell schon
   vorhandenes label nicht zu \"{u}berschreiben, dieser Versuch erzeugt
   den oben genannten Fehler. Um diesen Fehler zu vermeiden, k\"{o}nnen Sie
   mit den folgenden Shell-Kommandos ein EOF am den Anfang des Volumes schreiben:

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

Das label-Kommando kann aufgrund verschiedener Gr\"{u}nde fehlschlagen:

\begin{enumerate}
\item Der angegebene Volume-Name existiert schon in der Katalog-Datenbank

\item Der Storage-Dienst hat schon ein Tape oder anderes Volume in dem
      ben\"{o}tigten Ger\"{a}t gemountet. In diesem Fall m\"{u}ssen Sie
      das Ger\"{a}t erst mit dem {\bf unmount}-Kommando freigeben und dann
      ein leeres Volume zum labeln einlegen.

\item Das Volume ist bereits gelabelt. Bacula wird niemals ein bestehendes label
      \"{u}berschreiben, solange das Volume nicht abgelaufen ist und Sie das
      {\bf relabel}-Kommando verwenden.

\item Es ist kein Volume im Ger\"{a}t.
\end{enumerate}

Es gibt zwei M\"{o}glichkeiten ein bestehendes Bacula-label zu \"{u}berschreiben.
Die brutale Methode ist es, einfach ein EOF an den Anfang des Volumes zu schreiben
(dabei wird das bestehende label durch das EOF \"{u}berschrieben).
Mit dem Programm {\bf mt} k\"{o}nnen Sie das zum Beispiel so tun:

\footnotesize
\begin{verbatim}
 [user@host]$  mt -f /dev/st0 rewind
 [user@host]$  mt -f /dev/st0 weof
\end{verbatim}
\normalsize

Ein Festplatten-Volume k\"{o}nnen Sie auch manuell l\"{o}schen.

Danach benutzten Sie das label-Kommando, um ein neues label zu erzeugen.
Allerdings kann diese Vorgehensweise Spuren des alten Volumes in der
Katalog-Datenbank hinterlassen.

Die bevorzugte Methode ein Volume neu zu labeln sollte es sein,
zuerst das Volume als bereinigt (purged) zu markieren. Das passiert entweder automatisch,
wenn die Aufbewahrungszeit (Volume-Retention) f\"{u}r das Volume abl\"{a}uft,
oder kann aber auch mit dem {\bf purge}-Kommando erzwungen werden.
Danach k\"{o}nnen Sie das {\bf relabel}-Kommando, wie weiter unten beschrieben, verwenden.

Falls Ihr Autochanger Barcode-Labels unterst\"{u}tzt, k\"{o}nnen Sie
alle Volumes im Autochanger, eins nach dem anderen, mit dem Kommando
{\bf label barcodes} labeln. Dabei wird jedes Tape mit Barcode nacheinander
im Laufwerk gemountet und mit der auf dem Barcode enthaltenen Zeichenfolge
als Namen gelabelt. Ein entsprechender Katalog-Eintrag wird automatisch
mit erzeugt. Jedes Volume mit einem Barcode der mit den Zeichen beginnt,
die im Pool-Eintrag als CleaningPrefix konfiguriert sind, wird wie ein
Reinigungsband behandelt und nicht gelabelt. Allerdings wird dabei auch
ein Katalog-Eintrag f\"{u}r das Reinigungsband erstellt.

Als Beispiel, mit dem Eintrag:
\footnotesize
\begin{verbatim}
        Pool {
          Name ...
          Cleaning Prefix = "CLN"
       }
\end{verbatim}
\normalsize

wird jedes Tape, dessen Barcode mit CLN beginnt, als Reinigungsband betrachtet
und nicht automatisch gemountet.
Das label-Kommando kann folgenderma{\ss}en aufgerufen werden:

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

\item [list]
   \index[general]{list}
   Das list-Kommando zeigt den angegebenen Inhalt der Katalog-Datenbank an.
   Die verschiedenen Felder jedes Eintrags werden in einer Zeile ausgegeben.
   Die verschiedenen M\"{o}glichkeiten sind:
\footnotesize
\begin{verbatim}
   list jobs
   
   list jobid=<id>           (zeigt jobid <id> an)

   list ujobid=<unique job name> (zeigt den job mit dem Namen <unique job name> an)
   
   list job=<job-name>   (zeigt alle Jobs mit dem Namen <job-name> an)

   list jobname=<job-name>  (identisch mit dem oberen)

                Im oberen Beispiel kann auch den Parameter limit=nn angegeben
                werden, um die Ausgabe des Kommandos auf nn Jobs zu begrenzen
   
   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

   Die meisten der oben genannten Parameter sollten selbsterkl\"{a}rend sein.
   \"{U}blicherweise werden Sie, falls Sie nicht gen\"{u}gend Parameter angeben,
   von der Console nach den fehlenden Informationen gefragt.

   Das {\bf list nextvol}-Kommando gibt den Volume-Namen aus, der von dem angegebenen Job
   beim n\"{a}chsten Backup benutzt werden wird. Allerdings sollten Sie beachten, dass
   das tats\"{a}chlich benutzte Volume von einer Reihe von Faktoren, wie zum Beispiel
   von den vorher laufenden Jobs oder der Zeit, wann der Job l\"{a}uft, abh\"{a}ngen kann.
   Eventuell wird ein Tape schon voll sein, das aber noch freien Platz hatte, als Sie
   das Kommando ausf\"{u}hrten. Dieses Kommando gibt Ihnen also nur einen Hinweis darauf,
   welches Tape benutzt werden k\"{o}nnte, aber es kann keine definitive Aussage dar\"{u}ber treffen.
   Zus\"{a}tzlich kann dieses Kommando mehrere Seiteneffekte haben, da es den selben
   Algorithmus durchl\"{a}uft, wie ein echter Backup-Job. Das bedeutet, dass es dazu f\"{u}hren kann,
   dass aufgrund dieses Kommandos Volumes automatisch recycled oder gel\"{o}scht (purged) werden.
   Standardm\"{a}{\ss}ig muss der angegebene Job innerhalb der n\"{a}chsten zwei Tage laufen,
   ansonsten wird kein Volume f\"{u}r den Job gefunden. Allerdings k\"{o}nnen Sie durch
   Angabe des Parameters
   {\bf days=nnn} bis zu 50 Tage in die Zukunft angeben, die das Kommando in die Berechnung
   mit einbeziehen soll. Falls Sie, zum Beispiel, Freitags sehen wollen, welches Volume am Montag
   voraussichtlich benutzt wird, k\"{o}nnen Sie folgendes Kommando benutzen:
   {\bf list nextvol job=MyJob days=3}.

   Wenn Sie bestimmte, von Ihnen \"{o}fter ben\"{o}tigte, eigene Kommandos anlegen wollen
   um sich bestimmte Inhalte der Katalog-Datenbank anzeigen zu lassen,
   k\"{o}nnen Sie diese der Datei {\bf query.sql} hinzu\"{u}gen. Allerdings
   erfordert das einiges an Wissen \"{u}ber SQL-Kommandos. Lesen Sie dazu bitte
   den Abschnitt \"{u}ber das {\bf query}-Kommando in diesem Kapitel.

   Weiter unten finden Sie auch eine Beispiel-Ausgabe des {\bf llist}-Kommandos,
   das Ihnen den kompletten Inhalt des Katalogs zu einem bestimmten Konfigurations-Eintrag
   anzeigt.

   Als ein Beispiel, kann Ihnen der Aufruf des Kommandos {\bf list pools} die folgenden
   Ausgaben anzeigen:

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

   Wie oben schon angedeutet, zeigt das {\bf list}-Kommando den Inhalt
   der Katalog-Datenbank an. Einige Konfigurations-Eintr\"{a}ge, bzw.
   \"{A}nderungen an den Konfigurations-Eintr\"{a}gen, werden beim 
   Start des Director-Dienstes in die Datenbank geschrieben.
   Die meisten Einstellungen und \"{A}nderungen werden hingegen
   erst im Katalog aktualisiert, wenn sie zum ersten Mal
   benutzt werden, so zum Beispiel die Client- und Job-Eintr\"{a}ge.

   Bacula erzeugt den Client-Eintrag also dann, wenn zum ersten Mal
   ein Job f\"{u}r diesen Client startet. Durch das {\bf status}-Kommando
   wird die Katalog-Datenbank nicht aktualisiert, auch wenn Sie dort
   eventuell schon einen Eintrag f\"{u}r den neuen Client in der Liste der
   geplanten Jobs sehen. Der Client-Eintrag wird auf alle F\"{a}lle
   beim starten des ersten Jobs des Clients erzeugt, egal ob der Job
   erfolgreich lief oder nicht. Zus\"{a}tzlich schreibt der Director-Dienst
   noch eine weitere Client-Information in die Katalog-Datenbank (die Ausgabe
   von "`uname -a"').

   Wenn Sie alle verf\"{u}gbaren Client-Eintr\"{a}ge der Datenbank (auch aus mehreren
   Katalog-Datenbanken, falls konfiguriert) sehen wollen,
   k\"{o}nnen Sie auch das {\bf show clients}-Kommando verwenden, das zudem
   noch Informationen \"{u}ber die Adresse, den Port und den Katalog-Namen des Clients
   (sowie einige andere) ausgibt.

\item [llist]
   \index[general]{llist}
   Das llist-Kommando ("`langes list"') benutzt dieselben Parameter wie das oben
   beschriebene list-Kommando. Der Unterschied ist, dass das llist-Kommando
   den kompletten Inhalt der Katalog-Datenbank, zu der als Parameter angegebenen
   Konfiguration, anzeigt. Dabei werden die einzelnen Felder der Datenbank-Eintr\"{a}ge
   untereinander, mit einem Feld pro Zeile, ausgegeben. Diese Kommando kann eine
   sehr lange Liste an Ausgaben produzieren.

   Wenn Sie anstelle des {\bf list pools}, wie im oberen Beispiel, das
   Kommando {\bf llist pools} verwenden, erhalten Sie diese Ausgabe:

\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}
   Durch ausf\"{u}hren des messages-Kommandos werden wartende Console-Meldungen
   sofort angezeigt.

\item [memory]
   \index[general]{memory}
   Gibt die momentane Speichernutzung des Director-Dienstes aus.

\item [mount]
   \index[general]{mount}
   Das mount-Kommando veranlasst Bacula dazu, ein Volume in einem physikalischen
   Laufwerk zu lesen. Es ist damit m\"{o}glich Bacula mitzuteilen, dass ein neues
   Tape im Laufwerk ist und Bacula wird daraufhin versuchen das Label einlesen,
   um das Volume richtig zuordnen zu k\"{o}nnen. Normalerweise wird dieses Kommando
   nur ausgef\"{u}hrt, wenn kein Volume im Laufwerk war und Bacula Sie auffordert
   ein neues einzulegen, oder wenn Sie das Laufwerk vorher mit dem {\bf unmount}-Kommando
   freigegeben haben. Falls Sie einen Autochanger benutzen, wird das mount-Kommando
   Sie nach dem Slot des Tapes und dem Laufwerk fragen, in welchem das Tape gemountet werden soll.

   Das mount-Kommando kann folgenderma{\ss}en aufgerufen werden

\footnotesize
\begin{verbatim}
mount  storage=<storage-name> [ slot=<num> ] [
       drive=<num> ]

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

   Wenn Sie in der Ger\"{a}te-Konfiguration des Storage-Dienstes {\bf Automatic  Mount = yes}
   angegeben haben, wird Bacula automatisch auf das Ger\"{a}t zugreifen, solange Sie es
   nicht explizit mit dem {\bf unmount}-Kommando freigegeben haben.

\item[python]
   \index[general]{python}
   Das python-Kommando kennt nur den Parameter {\bf restart}:

\footnotesize
\begin{verbatim}
   python restart
\end{verbatim}
\normalsize

   dadurch wird der python-Interpreter des Director-Dienstes neu geladen.
   Das kann beim Testen hilfreich sein, da es der einzige Weg ist, den python-Interpreter
   nach dem Start des Director-Dienstes dazu zu veranlassen, seine Konfiguration
   in der Datei {\bf DirStartUp.py} neu einzulesen. F\"{u}r weiterf\"{u}hrende Informationen
   zum Thema python-Scripting lesen Sie bitte das Kapitel \ilink{PythonScripting}{PythonChapter}.

\label{ManualPruning}
\item [prune]
   \index[general]{prune}
   Das prune-Kommando erlaubt es Ihnen, abgelaufenen Job- oder Volume-Eintr\"{a}ge
   aus der Katalog-Datenbank zu entfernen. Dieses Kommando arbeitet nur auf der
   Katalog-Datenbank und l\"{o}scht keine Dateien von den Volumes. Auf jeden Fall
   wird ein Aufbewahrungszeitraum (RetentionPeriod) auf die angegebenen Eintr\"{a}ge angewendet,
   wenn Sie dieses Kommando ausf\"{u}hren. Falls die Katalog-Eintr\"{a}ge also noch nicht
   abgelaufen sind, hat das prune-Kommando auch keine Auswirkungen. Sie k\"{o}nnen
   mit diesem Kommando abgelaufene Dateien aus den Job-Eintr\"{a}gen
   l\"{o}schen, abgelaufene Jobs oder Statistiken aus dem Katalog entfernen
   und Sie k\"{o}nnen veraltete Job- und Datei-Eintr\"{a}ge eines bestimmten
   Volumes aus dem Katalog entfernen.

\footnotesize
\begin{verbatim}
prune files|jobs|volume|stats client=<client-name>
volume=<volume-name>
\end{verbatim}
\normalsize

   Um die Katalog-Eintr\"{a}ge eines Volumes zu l\"{o}schen, muss der
   {\bf VolStatus} entweder Full, Used oder Append sein, ansonsten werden
   keine Eintr\"{a}ge entfernt.

\item [purge]
   \index[general]{purge}
   Das purge-Kommando entfernt die angegebenen Katalog-Eintr\"{a}ge
   ohne den Aufbewahrungszeitraum zu beachten. Dieses Kommando arbeitet nur
   auf der Katalog-Datenbank und l\"{o}scht keine Dateien von den Volumes.
   Mit diesem Kommando k\"{o}nnen auch versehentlich aktuelle Eintr\"{a}ge,
   die eventuell dringend ben\"{o}tigt werden, aus der Katalog-Datenbank
   gel\"{o}scht werden. Wir empfehlen Ihnen daher, dieses Kommando nur zu benutzen,
   wenn Sie wirklich wissen was Sie tun.
   Das purge-Kommando kann folgenderma{\ss}en aufgerufen werden:

\footnotesize
\begin{verbatim}
purge files jobid=<jobid>|job=<job-name>|client=<client-name>

purge jobs client=<client-name> (of all jobs)

purge volume|volume=<vol-name> (of all jobs)
\end{verbatim}
\normalsize

   Damit das purge-Kommando Volume-Eintr\"{a}ge aus der Katalog-Datenbank
   entfernen kann, muss der {\bf VolStatus} entweder Full, Error, Used oder
   Append sein.

   Die Daten auf den Volumes werden durch dieses Kommando nicht ver\"{a}ndert.

\item [quit]
   \index[general]{quit}
   Das quit-Kommando beendet das Consolen-Programm. Die Console sendet das quit-
   Kommando an den Director-Dienst und wartet auf seine Best\"{a}tigung. Falls der
   Director mit der Aus\"{u}hrung von anderen Kommandos besch\"{a}ftigt ist,
   kann es einen Moment dauern, bis das quit ausgef\"{u}hrt werden kann. In dem
   Fall k\"{o}nnen Sie durch Eingabe von {\bf .quit} die Console sofort beenden.

\item [query]
   \index[general]{query}
   Das query-Kommando liest die vordefinierten SQL-Komandos aus der Datei,
   die unter QueryFile in der Konfiguration des Director-Dienstes angegeben ist, ein.
   Danach k\"{o}nnen Sie aus der Liste der verf\"{u}gbaren SQL-Anweisungen eine
   zur Ausf\"{u}hrung ausw\"{a}hlen.

Die folgenden Anweisungen sind momentan vordefiniert (Version 2.2.7):

\footnotesize
\begin{verbatim}
Available queries:
1: List up to 20 places where a File is saved regardless of the directory
2: List where the most recent copies of a file are saved
3: List last 20 Full Backups for a Client
4: List all backups for a Client after a specified time
5: List all backups for a Client
6: List Volume Attributes for a selected Volume
7: List Volumes used by selected JobId
8: List Volumes to Restore All Files
9: List Pool Attributes for a selected Pool
10: List total files/bytes by Job
11: List total files/bytes by Volume
12: List Files for a selected JobId
13: List Jobs stored on a selected MediaId
14: List Jobs stored for a given Volume name
15: List Volumes Bacula thinks are in changer
16: List Volumes likely to need replacement from age or errors
Choose a query (1-16):
      
\end{verbatim}
\normalsize

\item [relabel]
   \index[general]{relabel}
   \index[general]{relabel}
   Das relabel-Kommando wird benutzt um ein neues label auf ein bereits
   gelabeltes physikalisches Volume zu schreiben. Das Kommando wird wie folgt
   aufgerufen:

\footnotesize
\begin{verbatim}
relabel storage=<storage-name> oldvolume=<old-volume-name>
    volume=<newvolume-name>
\end{verbatim}
\normalsize

   Wenn Sie einen Parameter nicht angeben, wird die Console Sie danach fragen.
   Damit der alte Volume-Name (das label) \"{u}berschrieben werden kann,
   muss der {\bf VolStatus} entweder Purged oder Recycle sein, was automatisch
   passiert, wenn die entsprechenden Aufbewahrungszeitr\"{a}ume abgelaufen sind
   (oder alle Datei- und Job-Eintr\"{a}ge dieses Volumes mit dem purge-Kommando
   aus der Katalog-Datenbank entfernt wurden).

   Wenn das Volume erfolgreich relabelt wurde, sind alle Daten auf dem Volume verloren
   und k\"{o}nnen nicht wiederhergestellt werden.

\item [release]
   \index[general]{release}
   Das release-Kommando veranla{\ss}t den Storage-Dienst, dass im angegebenen Ger\"{a}t
   befindliche Tape zur\"{u}ckzuspulen und das label beim n\"{a}chsten Zugriff neu einzulesen.

\footnotesize
\begin{verbatim}
release storage=<storage-name>
\end{verbatim}
\normalsize

   Nach dem release-Kommando ist das Ger\"{a}t weiterhin von Bacula ge\"{o}ffnet
   (au{\ss}er Sie haben "`Always Open"' in der Storage-Dienst-Konfiguration auf "`No"' gesetzt),
   andere Proze{\ss}e/Programme k\"{o}nnen also nicht auf das Ger\"{a}t zugreifen.
   Allerdings k\"{o}nnen Sie bei einigen Laufwerken, nach dem release-Kommando,
   das Tape gegen ein anderes austauschen, da Bacula weiss, dass es das label
   neu einlesen muss. Falls Sie mit anderen Programmen auf das Ger\"{a}t zugreifen wollen,
   m\"{u}ssen Sie das unmount-Kommando verwenden, nur dann gibt Bacula das Ger\"{a}t komplett frei.

\item [reload]
  \index[general]{reload}
   Das reload-Kommando veranla{\ss}t den Director-Dienst seine Konfigurations-Dateien
   neu einzulesen und mit der aktuellen Konfiguration weiterzuarbeiten. Die neue
   Konfiguration wird dabei sofort f\"{u}r alle neuen Jobs g\"{u}ltig.
   Wenn Sie die Zeitpl\"{a}ne (Schedules) \"{a}ndern, bedenken Sie bitte, dass Bacula
   die geplanten Jobs bis zu zwei Stunden im vorraus berechnet und es dadurch zu einer
   Verz\"{o}gerung kommen kann, bis die neue Konfiguration g\"{u}ltig wird. Jobs die bereits
   in der Warteschlange sind (deren eigentliche Startzeit also schon vorbei ist), werden
   mit den alten Konfigurations-Werten abgearbeitet. Neue Jobs werden die neue Konfiguration
   benutzen. Wenn Sie das reload-Kommando ausf\"{u}hren w\"{a}hrend Jobs laufen,
   wird die neue Konfiguration solange zur\"{u}ckgehalten, bis alle Jobs beendet sind
   und erst dann wirksam. Sie k\"{o}nnen bis zu zehn Konfigurations\"{a}nderungen
   durchf\"{u}hren w\"{a}hrend Jobs laufen, erst danach wird der Director-Dienst
   eine Meldung ausgeben, dass er nicht mehr unterschiedliche Konfigurationen
   im Speicher vorhalten kann.

   Auch wenn es m\"{o}glich ist, die Director-Konfiguration zur Laufzeit neu zu laden,
   und auch dann wenn Jobs laufen, sollten Sie bei der n\"{a}chsten Gelegenheit
   den Director-Dienst neu starten um Seiteneffekte auszuschlie{\ss}en. Das neue Einlesen
   der Konfiguration ist ein sehr komplexer Vorgang und nur nach dem Neustart
   k\"{o}nnen Sie sicher sein, dass nur noch mit der neuen Konfiguration gearbeitet wird.

\label{restore_command}
\item [restore]
   \index[general]{restore}
   Das restore-Kommando erlaubt es Ihnen auf verschiedenen Wegen, einen oder mehrere Jobs (JobIDs)
   zur Wiederherstellung auszuw\"{a}hlen. Nachdem die JobIDs ausgew\"{a}hlt wurden,
   erstellt der Director-Dienst aus den dazugeh\"{o}hrigen Datei-Eintr\"{a}gen
   einen internen Verzeichnis-Baum in dem Sie dann die Dateien und Verzeichnisse
   zur Wiederherstellung markieren k\"{o}nnen. Dieser restore-Modus der Console
   verh\"{a}hlt sich \"{a}hnlich dem Unix-Standard-Kommando {\bf restore}.

\footnotesize
\begin{verbatim}
restore storage=<storage-name> client=<backup-client-name>
  where=<path> pool=<pool-name> fileset=<fileset-name>
  restoreclient=<restore-client-name>
  select current all done  
\end{verbatim}
\normalsize

   Wobei {\bf current}, falls angegeben, das restore-Kommando dazu veranla{\ss}t,
   automatisch das aktuellste Backup zur Wiederherstellung auszuw\"{a}hlen.
   Das Schl\"{u}sselwort {\bf all} w\"{a}hlt automatisch alle Dateien aus.
   Falls Sie einen ben\"{o}tigten Parameter nicht angeben, wird das restore-Kommando
   Sie danach fragen. F\"{u}r weitere Informationen zum {\bf restore}-Kommando
   lesen Sie bitte das \ilink{Restore Kapitel}{RestoreChapter} dieses Handbuchs.

   Das Schl\"{u}sselwort {\bf client} gibt sowohl den Client an, auf dem das Backup
   gemacht wurde, als auch den Client auf dem das Backup widerhergestellt werden soll.
   Durch Angabe des {\bf restoreclient} k\"{o}nnen Sie allerdings auch einen anderen Client
   w\"{a}hlen, auf dem das Backup statt dessen wiederhergestellt werden soll.

\item [run]
   \index[general]{run}
   Das run-Kommando erlaubt es Ihnen, Jobs in den Zeitplan des Director-Dienstes einzuf\"{u}gen,
   die sofort gestartet werden sollen. Das run-Kommando kann wie folgend aufgerufen werden:

\footnotesize
\begin{verbatim}
run job=<job-name> client=<client-name>
  fileset=<FileSet-name>  level=<level-keyword>
  storage=<storage-name>  where=<directory-prefix>
  when=<universal-time-specification> spooldata=yes|no yes
\end{verbatim}
\normalsize

   Jede ben\"{o}tigte Information, die nicht angegeben wurde, wird zur Auswahl aufgelistet.
   Bevor der Job in den Zeitplan des Directors eingef\"{u}gt wird, werden Sie
   aufgefordert die Parameter zu best\"{a}tigen, zu \"{a}ndern oder den Job abzubrechen.
   Falls Sie das Schl\"{u}sselwort {\bf yes} angegeben haben, wird der Job ohne Nachfrage
   in den Zeitplan aufgenommen.

   Ein Beispiel:

\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

Nach der Auswahl der Nummer 5 erscheint:

\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

Wenn Sie jetzt {\bf yes} eingeben, wird der Job gestartet,
falls Sie {\bf mod} ausw\"{a}hlen,
erscheint diese Liste der ver\"{a}nderbaren Parameter:

\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

Wenn Sie den Job zum Beispiel erst zu einem sp\"{a}teren Zeitpunkt starten wollen,
k\"{o}nnen Sie \"{u}ber die Auswahl Nr. 6 "`When"', die Startzeit anpassen.
Die Zeit muss im Format YYYY-MM-DD HH:MM:SS angegeben werden.

Der Parameter spooldata kann nicht \"{u}ber diese Auswahlliste ge\"{a}ndert werden.
Er muss beim Starten des run-Kommandos auf der Kommandozeile mit angegeben werden.
Wir er nicht gesetzt, \"{u}bernimmt das run-Kommando die spooldata-Option aus
der Job-, Storage- oder Schedule-Konfiguration.

\item [setdebug]
   \index[general]{setdebug}
   \index[general]{setdebug}
   \index[general]{debugging}
   \index[general]{debugging Win32}
   \index[general]{Windows!debugging}
   Das setdebug-Kommando wird benutzt um den Debug-Level f\"{u}r die verschiedenen
   Dienste zu setzen (der Debug-Level bestimmt die Menge der ausgegebenen Programm-Informationen,
   die z.B. zur Fehlersuche verwendet werden k\"{o}nnen).
   Es wird wie folgt aufgerufen:

\footnotesize
\begin{verbatim}
setdebug level=nn [trace=0/1 client=<client-name> | dir | director |
  storage=<storage-name> | all]  
\end{verbatim}
\normalsize

   Wenn trace=1 gesetzt wird, schreibt der gew\"{a}hlte Dienst alle Ausgaben
   in eine Datei ("`Dienst-Name"'.trace) in seinem konfigurierten Arbeitsverzeichnis.
   Das ist vor allem bei Windows-Systemen n\"{u}tzlich, da sich dort die Programm-Ausgaben
   nicht \"{u}ber die Kommandozeile in Dateien umlenken lassen, bzw. keine Ausgaben
   im Terminal dargetestellt werden. Im Trace-Modus wird jede Programm-Ausgabe der Trace-Datei
   angeh\"{a}ngt. Diese Datei muss von Hand durch den Benutzer gel\"{o}scht werden.

\item [setip]
   \index[general]{setip}
   erm\"{o}glicht dem Client seine aktuelle IP-Adresse dem Director-Dienst
   mitzuteilen, falls er dazu autorisiert ist.

\item [show]
   \index[general]{show}
   \index[general]{show}
   Das show-Kommando zeigt die Konfiguration des Director-Dienstes an.
   Diese Kommando wird haupts\"{a}chlich zur Fehlersuche durch die Entwickler
   benutzt. Die folgenden Schl\"{u}sselw\"{o}rter k\"{o}nnen angegeben werden:
   catalogs, clients, counters, devices, directors,filesets, jobs, messages,
   pools, schedules, storages, all, help. Bitte beachten Sie den Unterschied zum
   list-Kommando, welches den Inhalt der Katalog-Datenbank anzeigt.

\item [sqlquery]
   \index[general]{sqlquery}
   Das sqlquery-Kommando versetzt die Console in den SQL-Abfrage-Modus.
   Nach diesem Kommando k\"{o}nnen Sie, auch \"{u}ber mehrere Zeilen, eine
   SQL-Anweisung eingeben. Nachdem die Anweisung mit einem Semikolon (;) abgeschlossen
   ist, wird sie direkt an die Datenbank \"{u}bergeben. Nach der Ausgabe des Ergebnisses
   wird wieder eine neue SQL-Anweisung erwartet. Den SQL-Abfrage-Modus k\"{o}nnen Sie
   durch die Eingabe eines Punktes (.), als erstes Zeichen in der Eingabezeile, beenden.

   Mittels dieses Kommandos k\"{o}nnen Sie direkt die Katalog-Datenbank abfragen.
   Seihen Sie bitte vorsichtig, damit Sie nicht aus Versehen Datenbank-Eintr\"{a}ge
   \"{a}ndern oder l\"{o}schen. Lesen Sie bitte auch die Beschreibung des query-Kommandos
   weiter unten, mit dem Sie einfacher und sicherer Datenbank-Abfragen durchf\"{u}hren k\"{o}nnen.

   Abh\"{a}ngig von dem von Ihnen verwendeten Datenbank-Systems (MySQL, PostgreSQL
   oder SQLite) haben Sie mehr oder weniger M\"{o}glichkeiten direkte
   Datenbank-Abfragen durchzuf\"{u}hren.
   Mehr Informationen finden Sie in der Beschreibung Ihrer Datenbank.

\item [status]
   \index[general]{status}
   Das status-Kommando zeigt den momentanen Status des gew\"{a}hlten Dienstes an
   (Director, Storage oder eines Clients). Beim Storage-Dienst k\"{o}nnen Sie
   sich den Laufwerks-Status oder den Inhalt des Autochangers anzeigen lassen.
   Der Client zeigt Informationen \"{u}ber aktuell laufende Jobs und deren
   Geschwindigkeit an. Es kann wie folgt aufgerufen werden:

\footnotesize
\begin{verbatim}
status [all | dir=<dir-name> | director [days=nnn] |
  client=<client-name> | [slots] storage=<storage-name> ]
\end{verbatim}
\normalsize

   Wenn Sie das Kommando {\bf status dir} ausf\"{u}hren, listet die Console
   die momentan laufenden Jobs, alle f\"{u}r die n\"{a}chsten 24 Stunden
   geplanten Jobs und die letzten 10 beendeten Jobs, sowie deren Status auf.
   Die Liste der geplanten Jobs enth\"{a}lt auch den Namen des Volumes,
   das voraussichtlich benutzt wird. Beachten Sie dabei bitte diese beiden Punkte:
   1. um das Volume zu ermitteln wird dieselbe Funktion benutzt wie in dem Moment
   wo der Backup-Job startet, allerdings werden die Ablaufzeitr\"{a}ume der Volumes
   nicht in Betracht gezogen; 2. das angezeigte Volume ist die nur bestm\"{o}gliche
   Sch\"{a}tzung, da das Volume eventuell in der zwischenzeit andersweitig benutzt
   oder auch durch vorher laufende Jobs vollgeschrieben werden k\"{o}nnte.

   In der Liste der laufenden Jobs finden Sie diese Informationen:

\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

   Wenn Sie sich diese Ausgabe von unten nach oben anschauen, sehen Sie,
   dass JobId 5343 (Rufus) gerade l\"{a}uft. JobId 5348 (Minou) wartet darauf,
   dass der Job 5343 beendet wird, da dieser momentan die Storage-Resource verwendet,
   daher die Meldung: "`waiting on max Storage jobs"'. JobId 5349 (CatalogBackup)
   hat eine geringere Priorit\"{a}t und wartet daher auf die Beendigung der
   Jobs mit h\"{o}heren Priorit\"{a}ten. Zuoberst steht die JobId 2507 (MatouVerify),
   die als letzte dieser JobIds geplant wurde, da schon andere wartende und
   laufende JobIds vorhanden sind, hat sie nur den Status "`waiting execution"'.

   Das Kommando {\bf status dir} zeigt standardm\"{a}{\ss}ig nur die f\"{u}r
   heute und morgen geplanten Jobs an. Falls Sie die geplanten Jobs der n\"{a}chsten
   drei Tage sehen m\"{o}chten um, zum Beispiel am Freitag zu kontrollieren,
   welche Volumes am Freitag, am Wochenende und am Montag benutzt werden,
   k\"{o}nnen Sie die Option {\bf days=3} verwenden. {\bf days=0} zeigt nur die
   f\"{u}r heute geplanten Jobs an.

   Falls Ihre Jobs also nicht wie gew\"{u}nscht starten, k\"{o}nnen
   Sie sich mit dem Kommando {\bf status dir} einen \"{U}berblick \"{u}ber
   die momentan laufenden und wartenden Jobs, sowie den Grund des wartens,
   verschaffen. Genauere Informationen bekommen Sie meistens, wenn Sie
   das Kommando {\bf status storage=xxx} verwenden. Als Beispiel sind hier die
   Ausgaben die dieses Kommando auf einem Storage im Leerlauf anzeigt:

\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:
Autochanger "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

Ganz oben sind unter "`Running Jobs"' und "`Jobs waiting .."' keine Eintr\"{a}ge,
was bedeutet, dass momentan kein Job l\"{a}uft und damit auch keine Ger\"{a}te
benutzt werden. Jetzt wird der Autochanger mit dem {\bf unmount}-Kommando
freigegeben und ein Job gestartet der das Ger\"{a}t vom Typ "`File (/tmp)"'
benutzen soll. Daraufhin gibt das Kommando {\bf status storage=xxx} diese
Meldungen aus:

\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

Der Autochanger ist, durch das {\bf unmount}-Kommando, im Status "`BLOCKED. User unmounted"'.
Das Device File, mit dem der Job gestartet wurde, ist im Status "`BLOCKED waiting for media"',
Bacula wartet jetzt darauf, dass Sie ein Volume labeln und mounten.

\item [time]
   \index[general]{time}
   Gibt die aktuelle Uhrzeit aus.

\item [trace]
   \index[general]{trace}
   Schaltet das Mitschneiden der Dienst-Ausgaben in eine Datei ein oder aus.
   Siehe setdebug Kommando.

\item [umount]
   \index[general]{umount}
   identisch mit unmount (in Anlehnung an das Unix-Kommando umount).

\item [unmount]
   \index[general]{unmount}
   Das unmount-Kommando veranlasst den Storage-Dienst dazu, dass angegebene Ger\"{a}t
   freizugeben. Der Aufruf dieses Kommandos ist identisch mit dem mount-Kommando:
\footnotesize
\begin{verbatim}
unmount storage=<storage-name> [ drive=<num> ]

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

   Nachdem ein Ger\"{a}t mit dem unmount-Kommando freigegeben wurde, kann
   Bacula es so lange nicht verwenden, bis es wieder mit dem mount-Kommando
   ge\"{o}ffnet wird. Falls Bacula das Ger\"{a}t zwischenzeitlich f\"{u}r einen
   Job ben\"{o}tigt, wird Bacula in regelm\"{a}{\ss}igen Abst\"{a}nden den Benutzer
   informieren, dass Ger\"{a}t zu mounten.

   Wenn das Ger\"{a}t ein Autochanger ist, wird das angebene Laufwerk
   zudem entladen. Wenn keine Laufwerk angegeben ist, wird Laufwerk 1 verwendet.

\label{UpdateCommand}
\item [update]
   \index[general]{update}
   Das update-Kommando aktualisiert die Katalog-Datenbank entsprechend der angegebenen
   Option. M\"{o}glich sind Pool- oder Volume-Eintr\"{a}ge oder auch die Volumes
   in den Slots eines Autochangers mit Barcode-Unterst\"{u}tzung. Im Falle der Pool-Eintr\"{a}ge
   werden die aktuellen Information aus den Konfigurations-Dateien des Director-Dienstes gelesen.
   Die folgenden Schl\"{u}sselw\"{o}rter k\"{o}nnen angegeben werden: 
\footnotesize
\begin{verbatim}
   media, volume, pool, slots, stats
\end{verbatim}
\normalsize

Falls Sie Volumes aktualisieren, werden Sie nach den zu \"{a}ndernden Parametern gefragt.
Folgende Volume-Parameter k\"{o}nnen angepasst werden:
\footnotesize
\begin{verbatim}
 
   Volume Status
   Volume Retention Period
   Volume Use Duration
   Maximum Volume Jobs
   Maximum Volume Files
   Maximum Volume Bytes
   Recycle Flag
   Recycle Pool
   Slot
   InChanger Flag
   Pool
   Volume Files
   Volume from Pool
   All Volumes from Pool
   All Volumes from all Pools
   
\end{verbatim}
\normalsize

   Bei Auswahl von {\bf Pool} wird Bacula das gew\"{a}hlte Volume in den angegebenen
   Pool verschieben.

   Bei Auswahl von {\bf Volume from Pool}, {\bf All Volumes from Pool} und {\bf All Volumes
   from all Pools} werden alle Volumes im entsprechenden Pool so angepasst, wie es aktuell
   in der Konfiguration des Director-Dienstes steht. Das betrifft folgende Eintr\"{a}ge:
   Recycle, RecyclePool, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles,
   und MaxVolBytes. (RecyclePool ist erst ab Version \gt 2.1.4 verf\"{u}gbar.)

   Durch das Kommando {\bf update slots} holt sich Bacula eine aktuelle Liste der
   Volume-Barcodes in den Slots des Autochangers. F\"{u}r jeden gefundenen Barcode
   wird automatisch der Slot des Volumes in der Katalog-Datenbank angepasst.
   Das ist n\"{u}tzlich, falls Sie Volumes in den Magazinen verschoben oder gewechselt haben.
   Beim aktualisieren der Slots wird auch das InChanger-Flag der Volumes im Katalog angepasst,
   dadurch weiss Bacula welche Volumes im Autochanger verf\"{u}gbar sind.

   Falls Ihr Autochanger keine Barcodes unterst\"{u}tzt, k\"{o}nnen Sie die
   Volumes im Autochanger mit dem Kommando {\bf update slots scan} aktualisieren.
   Das Schl\"{u}sselwort {\bf scan} teilt Bacula (nur Version \gt 1.33) mit,
   dass es alle Volumes nacheinandern mounten soll, um das Tape-Label einzulesen.

   Das update-Kommando kann wie folgt aufgerufen werden:

\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 recyclepool=zzz

\end{verbatim}
\normalsize

\item [use]
   \index[general]{use}
   Das use-Kommando wird verwendet um dem Director-Dienst mitzuteilen, welche Katalog-
   Datenbank verwendet werden soll. Da es normalerweise nur eine Datenbank gibt,
   wird diese immer automatisch ausgew\"{a}hlt. Fall Sie jedoch mehrere Katalog-Eintr\"{a}ge
   in der Konfiguration des Director-Dienstes angegeben haben, k\"{o}nnen Sie mittels
   des use-Kommandos von einem Katalog zum anderen wechseln.

\footnotesize
\begin{verbatim}
use <database-name>
\end{verbatim}
\normalsize

\item [var]
   \label{var}
   \index[general]{var name}
   Das var-Kommando akzeptiert eine Zeichenkette (auch in Anf\"{u}hrungstrichen)
   und f\"{u}hrt Variablen-Ersetzungen durch, wie sie auch mit der {\bf LabelFormat}
   Zeichenkette geschehen. Der einzige Unterschied ist, dass beim Ausf\"{u}hren des
   var-Kommandos kein Job l\"{a}uft und daher andere Werte verwendet werden anstelle von
   den Job-spezifischen. Allerdings werden Sie trotzdem einen Eindruck davon erhalten, was
   f\"{u}r eine Ausgabe zu erwarten ist.

\item [version]
   \index[general]{version}
   Das version-Kommando gibt die Version des Director-Dienstes aus.

\item [wait]
   \index[general]{wait}
   Das wait-Kommando wartet solange bis keine Jobs mehr laufen. Es kann
   in Batch-Programmen verwendet werden, die z.B. \"{u}ber den cron-Dienst
   gestartet werden und eine bestimmte Aktion erst ausf\"{u}hren sollen,
   wenn der Director im Leerlauf ist.
   Das wait-Kommando kennt die folgenden Optionen:
\footnotesize
\begin{verbatim}
   wait [jobid=nn] [jobuid=unique id] [job=job name]
\end{verbatim}
\normalsize
   Wenn eine der Optionen angegeben ist, wartet das wait-Kommando darauf,
   dass sich der spezifizierte Job beendet.
\end{description}

\label{dotcommands}
\section{Spezielle Punkt-Kommandos}
\index[general]{Kommandos!Spezielle Punkt-}
\index[general]{Spezielle Punkt-Kommandos}

Es gibt eine Reihen von Kommandos die mit einem Punkt (.) beginnen.
Diese Kommandos sind prinzipiell f\"{u}r die Verwendung in Batch-Programmen
oder Benutzerschnittstellen gedacht. Sie werden normalerweise nicht durch einen
Benutzer in der Console ausgef\"{u}hrt. Hier ist eine \"{U}bersicht:

\footnotesize
\begin{verbatim}
.backups job=xxx      zeigt die Backups des angegebenen Jobs an
.clients              listet alle Client-Namen auf
.defaults client=xxx fileset=yyy  zeigt die Defaults des angegebenen Clients an
.die                  verursacht einen Segment-Fault des Directors (zur Fehlersuche)
.dir                  im Datei-Auswahl-Modus des restore-Kommandos werden die Ausgaben
		      durch ein Komma getrennt, statt durch Leerzeichen wie beim dir
.exit                 quit
.filesets             zeigt alle FileSet-Namen an
.help                 zeigt die Hilfe unformatiert an
.jobs                 zeigt alle Job-Namen an
.levels               zeigt alle Backup-Level an
.messages             siehe messages
.msgs                 zeigt die message-Konfigurations-Namen an
.pools                zeigt alle Pool-Namen an
.quit                 quit
.status               holt Status-Ausgaben
.storage              zeigt die Namen der Storage-Einträge an
.types                zeigt die Job-Typen an
\end{verbatim}
\normalsize

\label{atcommands}

\section{Spezielle @-Kommandos}
\index[general]{Kommandos!Spezielle @-}
\index[general]{Spezielle @-Kommandos}

Normalerweise werden alle eingegebenen Kommandos direkt zur Ausf\"{u}hrung an den
Director-Dienst, welcher eventuell auf einem anderen Computer l\"{a}uft, geschickt.
Allerdings gibt es eine kleine Anzahl {\bf @}-Kommandos, die mit einem @ beginnen,
und die nicht durch den Director, sondern durch die Console selbst, ausgef\"{u}hrt werden.
Diese Kommandos sind nur in der Terminal(tty)-Version der Console implementiert, aber nicht in der
GNOME-Version. Diese Kommandos sind:

\begin{description}

\item [@input \lt{}filename\gt{}]
   \index[general]{@input \lt{}filename\gt{}}
   Liest und f\"{u}hrt die Kommandos aus der angegebenen Datei aus. 

\item [@output \lt{}filename\gt{} w/a]
   \index[general]{@output \lt{}filename\gt{} w/a}
   Schreibt die Ausgaben der Console in die angegebene Datei.
   Entweder wird die Datei \"{u}berschrieben (Option w) oder es wird an 
   eine bestehende Datei angeh\"{a}ngt (Option a). Um die Ausgaben wieder an das Terminal
   umzuleiten k\"{o}nnen Sie einfach {\bf @output} ohne einen Datei-Namen angeben.
   Passen Sie aber auf, dass Sie nicht versehentlich eine bereits bestehende Datei
   \"{u}berschreiben. Hier ein Beispiel um alle Ausgaben zu unterdr\"{u}cken:

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

\item [@tee \lt{}filename\gt{} w/a]
   \index[general]{@tee \lt{}filename\gt{} w/a}
   Sendet die Ausgaben an das Terminal und an die angegebene Datei.
   Zum Beenden f\"{u}hren Sie {\bf @tee} oder {\bf @output} ohne Datei-Namen aus.

\item [@sleep \lt{}seconds\gt{}]
   \index[general]{@sleep \lt{}seconds\gt{}}
   Schl\"{a}ft die angegebene Zeit in Sekunden.

\item [@time]
   \index[general]{@time}
   zeigt die aktuelle Zeit und das Datum an.

\item [@version]
   \index[general]{@version}
   zeigt die Console-Version an 

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

\item [@exit]
   \index[general]{@exit}
   quit

\item [@\# anything]
   \index[general]{anything}
   ein Kommantar 
\end{description}

\label{scripting}
\section{Steuern der Console durch ein Shell-Script}
\index[general]{Script!Steuern der Console durch ein Shell-}
\index[general]{Steuern der Console durch ein Shell-Script}

Sie k\"{o}nnen viele Console-Aufgaben durch Shell-Scripte vereinfachen.
Wenn Sie zum Beispiel folgende Kommandos in ein Script schreiben:

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

wird durch seine Ausf\"{u}hrung das Ger\"{a}t DDS-4 freigegeben und im Falle
eines Autochangers auch entladen. Sie k\"{o}nnen solche Scripte auch in
der Job-Konfiguration als {\bf RunBeforeJob} oder {\bf RunAfterJob} angeben.

Sie k\"{o}nnen die Console auch die Datei mit den Kommandos einlesen lassen,
wenn Sie sie so starten:

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

wobei die Datei {\bf Dateiname} beliebige und beliebig viele Kommandos
enthalten kann.

Als ein Beispiel, eine Datei die w\"{a}hrend Entwicklungstests von Bacula benutzt wird,
es wird ein Festplatten-Volume gelabelt, ein Job gestartet und die gesicherten Dateien
wiederhergestellt:

\footnotesize
\begin{verbatim}
./bconsole -c ./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

Die Ausgaben des Jobs werden dabei zu /tmp/log1.out und die Ausgaben der Wiederherstellung
zu /tmp/log2.out umgeleitet. Um automatisch zu \"{u}berpr\"{u}fen, ob beides erfolgreich war,
werden die beiden Log-Dateien mit diesem Script kontrolliert:

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

\section{Volumes zu einem Pool hinzuf\"{u}gen}
\index[general]{Volumes zu einem Pool hinzuf\"{u}gen}
\index[general]{Pool!Volumes hinzuf\"{u}gen}

Fall Sie das {\bf label}-Kommando zum labeln eines Volumes benutzt haben,
wird es automatisch zu dem angegebenen Pool hinzugef\"{u}gt.
Alternativ k\"{o}nnen Sie aber auch Volumes zu einem Pool hinzuf\"{u}gen ohne sie zu labeln.
Diese k\"{o}nnen dann sp\"{a}ter je nachdem gelabelt werden, wie Bacula sie ben\"{o}tigt.

Die folgenden Informationen m\"{u}ssen Sie vor dem hinzuf\"{u}gen haben:

\begin{enumerate}
\item Den Namen des Pools (normalerweise "`Default"')
\item Den Media-Typ wie er in dem Storage-Eintrag der Director-Dienst-Konfiguration angegeben ist
(z.B. DLT8000)
\item Die Anzahl und Namen der Volumes die Sie erstellen m\"{o}chten
\end{enumerate}

Um die Volumes zu dem Pool hinzuzuf\"{u}gen, k\"{o}nnen Sie dann beispielweise
folgende Kommandos ausf\"{u}hren:

\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

Zur Kontrolle k\"{o}nnen Sie sich dann die neuen Volumes anzeigen lassen:

\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

Bitte beachten Sie, dass die Console automatisch eine fortlaufende Nummer
an den Volume-Namen (Save in diesem Beispiel) anh\"{a}ngt. Wenn Sie diese Nummern
nicht angeh\"{a}ngt haben m\"{o}chten, m\"{u}ssen Sie auf die Frage "`Enter number
of Media volumes to create. Max=1000:"' mit 0 (Null) antworten. Dann wird nur ein
einzelnes Volume, mit dem von Ihnen eingegebenen Namen, erzeugt.
