%%
%%

\chapter{Anpassen der Konfigurations-Dateien}
\label{ConfigureChapter}
\index[general]{Dateien!Anpassen der Konfigurations }
\index[general]{Anpassen der Konfigurations-Dateien }

Jedes einzelne der Bacula Programme liest beim Starten die angegebene Konfigurations-Datei ein,
falls keine angegeben wird benutzt Bacula jeweils die Standard-Konfigurations-Dateien {\bf bacula-dir.conf}, {\bf
bacula-fd.conf}, {\bf bacula-sd.conf}, oder {\bf console.conf} f\"{u}r den Director-Dienst, den Client-Dienst,
den Storage-Dienst und f\"{u}r das Console-Programm.

Jeder Dienst (Director,Client, Storage und Console) hat seine eigene Konfigurations-Datei die eine Reihe von
Eintr\"{a}gen enth\"{a}lt. Die Eintr\"{a}ge sind sehr \"{a}hnlich, aber die angegebenen Parameter sind von
Dienst zu Dienst unterschiedlich. Zum Beispiel wird in der Director-Dienst-Konfiguration mit dem Eintrag
{\bf Director} der Name des Director-Dienstes, eine Reihe globaler Parameter, sowie das Director-Passwort festgelegt.
Der  {\bf Director}-Eintrag im Client-Dienst gibt an, welcher Director-Dienst diesen Client kontaktieren darf.

Bevor Sie Bacula zum ersten mal starten, m\"{u}ssen Sie die Konfigurations-Dateien f\"{u}r jeden Dienst anpassen.
Standard-Konfigurations-Dateien werden f\"{u}r jeden Dienst bei der Installation erzeugt, aber m\"{u}ssen Ihrem Computer
angepasst werden. Einen \"{U}berblick \"{u}ber die Konfigurations-Eintr\"{a}ge sehen Sie hier:

\addcontentsline{lof}{figure}{Bacula Objects}
\includegraphics{./bacula-objects.eps} 
\\
(vielen Dank an Aristides Maniatis f\"{u}r diese Graphik) 
\label{ResFormat}

\section{Zeichens\"{a}tze}
\index[general]{Zeichens\"{a}tze}
Bacula wurde so entwickelt, dass es die meisten Zeichens\"{a}tze der Welt versteht,
US ASCII, deutsch, französich, chinesisch, ..... Allerdings tut es dies, indem es 
alles in UTF-8 umwandelt und Bacula erwartet, dass alle Konfigurationsdateien
(auch die auf Win32-Computern) als UTF-8-Format vorliegen. Normalerweise ist UTF-8
der Standard-Zeichensatz auf Linux-Computern, aber eventuell nicht auf anderen
Unix-Varianten oder auf Windows. Sie sollten also sicherstellen, dass die entsprechenden
Umgebungsvariablen richtig gesetzt sind, befor Sie Bacula starten.

Damit Bacula auch Konfigurations-Dateien mit fremden Zeichen korrekt lesen kann,
muss die Umgebungsvariable {bf LANG} mit {\bf .UTF-8} enden, zum Beispiel {\bf en\_US.UTF-8}.
Die Schreibweise kann bei verschiedenen Betriebssystemen variieren und ebenso kann auch die 
Umgebungsvariable anders hei{\ss}en. Auf neueren Win32-Computern k\"{o}nnen Sie beim speichern
der Konfigurations-Dateien z.B. mit dem {\bf notepad} angeben, dass die Datei als UTF-8
gespeichert werden soll.

Bacula nimmt an, dass alle Dateinamen auf Linux und Unix im UTF-8-Format sind.
Bei Windows sind sie Unicode (UTF-16) und werden automatisch in UTF-8 umgewandelt.

\section{Konfigurations-Parameter-Format}
\index[general]{Konfigurations-Parameter-Format }
\index[general]{Format!Konfigurations-Parameter }

Auch wenn Sie nicht jedes Detail \"{u}ber alle Paramter wissen m\"{u}ssen,
ist ein grundlegendes Wissen des Konfigurations-Parameter-Formats erforderlich.
Jeder Konfigurations-Eintrag in einer Ressource (innerhalb der geschweiften Klammern)
ist zusammengesetzt aus dem Schl\"{u}sselwort gefolgt von einem Gleichheitszeichen,
dem dann ein oder mehrere Werte folgen. Das Schl\"{u}sselwort muss einem der
Bacula bekannten Konfigurations-Parameter entsprechen, wobei es gro{\ss}e oder kleine
Buchstaben enthalten darf, sowie auch Leerzeichen.

Jede Ressource muss einen Paramter {\bf Name} beinhalten und kann zus\"{a}tzlich
eine optionale {\bf Description} enthalten. Der Name wird ben\"{o}tigt um die Ressource
eindeutig zu bezeichnen. Die Description wird verwendet wenn die Ressource angezeigt wird,
um eine leichtere Erkennung zu erm\"{o}glichen.
Ein Beispiel:

\footnotesize
\begin{verbatim}
Director {
  Name = "MeinDir"
  Description = "Bacula Director"
  WorkingDirectory = "$HOME/bacula/bin/working"
}
\end{verbatim}
\normalsize

Diese Ressource definiert einen Director mit dem Namen "MeinDir" und dem Arbeitsverzeichnis
\$HOME/bacula/bin/working. Falls Sie Leerzeichen in einem Parameter verwenden wollen
(rechts vom Gleichheitszeichen) m\"{u}ssen Sie den Eintrag in doppelte Anf\"{u}hrungszeichen setzen.
Andernfalls sind Anf\"{u}hrungszeichen nicht n\"{o}tig.

\label{Comments}
\subsection{Kommentare}
\index[general]{Kommentare}

Wenn Bacula die Konfigurations-Dateien liest, werden leere Zeilen und alles hinter einem
Rautezeichen (\#) bis zum Zeilenende ignoriert. Ein Semikolon (;) wird als logisches
Zeilenende interprtiert und alles hinter dem Semikolon wird als n\"{a}chster
Konfigurations-Eintrag betrachtet. Wenn ein Eintrag in einer eigenen Zeile steht,
wird kein abschlie{\ss}endes Semikolon ben\"{o}tigt, in den Beispielen in diesem
Handbuch werden Sie daher kaum Semikolons finden.


\label{Case1}

\subsection{Gro{\ss}/Kleinschreibung und Leerzeichen}
\index[general]{Leerzeichen!Gro{\ss}/Kleinschreibung}
\index[general]{Gro{\ss}/Kleinschreibung und Leerzeichen}

Gro{\ss}/Kleinschreibung und Leerzeichen werden beim lesen der Schl\"{u}sselw\"{o}rter
(dem Teil vor dem Gleichheitszeichen) komplett ignoriert.

Das bedeutet, dass die Schl\"{u}sselw\"{o}rter {\bf name}, {\bf Name} und {\bf N a m e}
alle identisch sind.

Leerzeichen hinter dem Gleichheitszeichen, vor dem ersten Zeichen des Wertes
werden auch ignoriert.

Generell werden Leerzeichen innerhalb eines Wertes nicht ignoriert,
wenn Leerzeichen im Wert vorhanden sind, muss der Wert in doppelte Anf\"{u}hrungszeichen
gesetzt werden. Namen d\"{u}rfen bis zu 127 Zeichen enthalten. Ein Name darf aus allen
ASCII-Zeichen bestehen. Innerhalb eine Zeichenkette die in doppelten Anf\"{u}hrungszeichen steht
kann man mit dem Backslash (umgekehrter Schr\"{a}gstrich \textbackslash{}) ein Zeichen maskieren,
damit es als es selbst dargestellt wird (praktisch um Anf\"{u}hrungszeichen und geschweifte Klammern
einzuf\"{u}gen).

Bitte beachten Sie, dass Bacula Ressource-Namen, sowie bestimmte andere Namen (z.B. Volume-Namen),
nur aus Buchstaben, Zahlen und ein paar Sonderzeichen (Leerzeichen, Unterstrich,..) bestehen d\"{u}rfen.
Alle anderen Zeichen sind nicht erlaubt.

\label{Includes}
\subsection{Einbinden anderer Konfigurations-Dateien}
\index[general]{Einbinden anderer Konfigurations-Dateien }
\index[general]{Dateien!Einbinden anderer Konfigurations }
\index[general]{Benutzung von @ zum einbinden anderer Dateien}
\index[general]{@{\bf Dateiname}}

Falls Sie Ihre Konfiguration auf mehrere kleine Dateien aufteilen m\"{o}chten,
k\"{o}nnen Sie das tun, indem Sie andere Konfigurations-Dateien mit @{\bf Dateiname} einbinden.
Dabei muss @{\bf Dateiname} den absoluten Pfad und Dateinamen enthalten. Die Angabe @Dateiname
darf an jeder Stelle stehen, wo auch eine Konfigurationsangabe stehen kann.

\label{DataTypes}
\subsection{grundlegende Datentypen}
\index[general]{Datentypen!grundlegende }
\index[general]{grundlegende Datentypen }

Beim einlesen der Konfigurations-Parameter klassifiziert Bacula die Daten
gem\"{a}{\ss} den unten aufgelisteten Datentypen. Wenn Sie dass das erstemal lesen,
wird es Ihnen eventuell etwas kompliziert vorkommen, aber in Wahrheit ist es ganz einfach und logisch.

\begin{description}

\item [name]
   \index[fd]{name}
   Ein Schl\"{u}sselwort oder Name besteht aus alphanumerischen Zeichen,
einschlie{\ss}lich Bindestrich, Unterstrich und Dollar-Zeichen. Das erste Zeichen eines {\bf Name}
muss ein Buchstabe sein. Ein Name hat eine maximale L\"{a}nge von 127 Zeichen. Typischerweise stehen
Schl\"{u}sselw\"{o}rter auf der linken Seite des Gleichheitszeichens (d.h. es sind
Bacula-Schl\"{u}sselw\"{o}rter z.B. Konfigurations-Eintrag-Namen oder Parameter-Namen).
Schl\"{u}sselw\"{o}rter d\"{u}rfen nicht in Anf\"{u}hrungszeichen stehen.

\item [name-string]
   \index[fd]{name-string}
   Ein Name-String ist \"{a}hnlich einem Namen, au{\ss}er das er in Anf\"{u}hrungszeichen stehen darf
und daher auch Lerrzeichen beinhalten kann. Ein Name-String darf 127 Zeichen lang sein und steht
typischerweise auf der rechten Seite des Gleichheitszeichens (d.h. es sind Werte die zum einem
Schl\"{u}sselwort geh\"{o}hren).

\item [string]
   \index[fd]{string}
   Ein String ist eine Zeichenkette die, in Anf\"{u}hrungszeichen gestellt, jedes beliebige Zeichen enthalten darf.
Ein String hat keine L\"{a}ngenbegrenzung. Strings sind typischerweise Werte die Dateinamen, Verzeichnisnamen oder
Betriebssystem-Befehlen entsprechen. Ein Backslash (umgekehrter Schr\"{a}gstrich \textbackslash{}) maskiert das folgende
Zeichen als sich selbst, dadurch kann man Anf\"{u}hrungszeichen innerhalb des Strings verwenden, oder auch den Backslash selbst.

\item [directory]
   \index[dir]{directory}
   A directory is either a quoted or  non-quoted string. A directory will be
passed to your  standard shell for expansion when it is scanned. Thus 
constructs such as {\bf \$HOME} are interpreted to be  their correct values. 

\item [password]
   \index[dir]{password}
   Ist ein Bacula-Passwort und wird intern als MD5-Hash gespeichert.

\item [integer]
   \index[dir]{integer}
   Eine 32-Bit Ganzzahl, positiv oder negativ.

\item [positive integer]
   \index[dir]{positive integer }
   Eine positive 32Bit-Ganzzahl.

\item [long integer]
   \index[dir]{long integer}
   Eine 64-Bit Ganzzahl. Typischerweise f\"{u}r Werte wie Bytes die \"{u}ber 4 Millionen
betragen k\"{o}nnen und daher 64-Bit erfordern.

\item [yes|no]
   \index[dir]{yes or no }
   Entweder ein Ja: {\bf yes} oder ein Nein: {bf no}.

\label{Size1}
\item [size]
\index[dir]{size}
   Eine Gr\"{o}{\ss}e angegeben in Bytes. Typischerweise eine Flie{\ss}kommazahl in wissenschaftlicher Schreibweise,
gefolgt von einem Modifikator. Intern als 64-Bit Ganzzahl gespeichert. Wenn ein Modofikator angegeben wird, muss er
direkt und ohne Leerzeichen dem Wert folgen.
Die folgenden Modifikatoren sind erlaubt:

\begin{description}
\item [k]
   1,024 (Kilobytes)  

\item [kb]
   1,000 (Kilobytes)  

\item [m]
   1,048,576 (Megabytes)  

\item [mb]
   1,000,000 (Megabytes)  

\item [g]
   1,073,741,824 (Gigabytes) 

\item [gb]
   1,000,000,000 (Gigabytes) 
\end{description}

\label{Time}
\item [time]
\index[dir]{time}
   Eine Zeit oder ein Zeitraum in Sekunden. Intern als 64-Bit Ganzzahl gespeichert,
allerdings in zwei Teilen: ein Nummern-Teil und ein Modifikator-Teil. Die Nummer kann eine
Ganz- oder Flie{\ss}kommazahl sein. Wenn sie als Flie{\ss}kommazahl angegeben wird, wird auf
den n\"{a}chsten Ganzzahl-Wert gerundet. Der Modifikator ist zwingend erforderlich und mu{\ss} dem Nummern-teil folgen
(entweder durch Leerzeichen getrennt oder nicht). Die folgenden Modifikatoren sind erlaubt:

\begin{description}

\item [seconds]
   \index[dir]{seconds}
   Sekunden

\item [minutes]
   \index[dir]{minutes}
   Minuten (60 Sekunden)

\item [hours]
   \index[dir]{hours }
   Stunden (3600 Sekunden)

\item [days]
   \index[dir]{days}
   Tage (3600*24 Sekunden)

\item [weeks]
   \index[dir]{weeks}
   Wochen (3600*24*7 Sekunden)

\item [months]
   \index[dir]{months }
   Monate (3600*24*30 Sekunden)

\item [quarters]
   \index[dir]{quarters }
   Quartale (3600*24*91 Sekunden)

\item [years]
   \index[dir]{years }
   Jahre (3600*24*365 Sekunden)
\end{description}

Jede Abk\"{u}rzung dieser Modifikatoren ist erlaubt (d.h. {\bf Sekunden} k\"{o}nnen als
{\bf sec} oder {\bf s} angegeben werden). Ein {\bf m} wird als Monat angenommen.

Die Angabe einer Zeit kann so viele Modifikatoren und Nummern enthalten, wie gew\"{u}nscht.
Ein Beispiel:

\footnotesize
\begin{verbatim}
1 week 2 days 3 hours 10 mins
1 month 2 days 30 sec
   
\end{verbatim}
\normalsize

sind g\"{u}ltige Zeitangaben.

\end{description}

\label{ResTypes}
\section{Ressource Typen}
\index[general]{Typen!Ressource }
\index[general]{Ressource Typen }

Die folgende Tabelle listet alle momentan von Bacula verwendeten Konfigurations-Eintr\"{a}ge auf.
Sie zeigt, welche Eintr\"{a}ge bei welchem Dienst vorhanden sein m\"{u}{\ss}en. Die Standard-Konfigurations-Dateien
beinhalten bereits mindestens ein Beispiel jedes ben\"{o}tigten Eintrags. Sie brauchen sich also keine Sorgen zu machen,
dass Sie diese Eintr\"{a}ge alle von Hand erstellen m\"{u}{\ss}en.

\addcontentsline{lot}{table}{Ressource Typen}
\begin{longtable}{|l|l|l|l|l|}
 \hline 
\multicolumn{1}{|c| }{\bf Ressource } & \multicolumn{1}{c| }{\bf Director } &
\multicolumn{1}{c| }{\bf Client } & \multicolumn{1}{c| }{\bf Storage } &
\multicolumn{1}{c| }{\bf Console  } \\
 \hline 
{Autochanger } & {Nein  } & {Nein } & {Ja } & {Nein  } \\
\hline
{Catalog } & {Ja } & {Nein  } & {Nein } & {Nein  } \\
 \hline 
{Client  } & {Ja } & {Ja } & {Nein } & {Nein  } \\
 \hline 
{Console } & {Ja } & {Nein } & {Nein } & {Ja  } \\
 \hline 
{Device  } & {Nein  } & {Nein } & {Ja } & {Nein  } \\
 \hline 
{Director } & {Ja } & {Ja } & {Ja } & {Ja  } \\
 \hline 
{FileSet } & {Ja } & {Nein } & {Nein } & {Nein  } \\
 \hline 
{Job  } & {Ja } & {Nein } & {Nein } & {Nein  } \\
 \hline 
{JobDefs } & {Ja } & {Nein } & {Nein } & {Nein  } \\
 \hline 
{Message } & {Ja } & {Ja } & {Ja } & {Nein  } \\
 \hline 
{Pool  } & {Ja } & {Nein } & {Nein } & {Nein  } \\
 \hline 
{Schedule } & {Ja } & {Nein } & {Nein } & {Nein  } \\
 \hline 
{Storage } & {Ja } & {Nein } & {Ja } & {Nein }
\\ \hline 

\end{longtable}

\section{Namen, Passw\"{o}rter und Autorisation}
\label{Names}
\index[general]{Autorisation!Namen Passw\"{o}rter und }
\index[general]{Namen, Passw\"{o}rter und Autorisation }
\index[general]{Passw\"{o}rter}

Damit ein Dienst mir einem anderen Kontakt aufnehmen darf, muss er sich mit einem Passwort autorisieren.
In den meisten F\"{a}llen geh\"{o}hrt ein Passwort zu einem bestimmten Namen, es muss also der Name und das Passwort
korrekt sein, um erfolgreich autorisiert zu werden. Passw\"{o}rter sind einfacher und beliebiger Text. Sie werden
nicht durch einen speziellen Prozess generiert; benutzen Sie einfach zuf\"{a}lligen Text.

Die Standard-Konfigurations-Dateien enthalten automatisch erzeugte Passw\"{o}rter, die eine erfolgreiche Autorisierung
aller Dienste untereinander erlauben. Wenn Sie diese Passw\"{o}rter ver\"{a}ndern, m\"{u}{\ss}en Sie das auch auf der
entsprechenden Gegenseite tun.

Hier ist ein Bild, worauf Sie sehen k\"{o}nnen, welche Namen und Passw\"{o}rter in welchen Dateien und Konfigurations-Eintr\"{a}gen
\"{u}bereinstimmen m\"{u}{\ss}en:

\includegraphics{./Conf-Diagram.eps} 

Auf der linken Seite sehen Sie die Director-, Storage- und Client-Eintr\"{a}ge mit ihren Namen und Passw\"{o}rtern,
dieses steht alles in der Konfiguration des Director-Dienstes in der Datei {\bf bacula-dir.conf}. Auf der rechten Seite
sehen Sie die entsprechenden Eintr\"{a}ge in den Konfigurations-Dateien des Storage- und Client-Dienstes (SD und FD).

Bitte beachten Sie, dass die Adresse {\bf fw-sd}, die in der Konfiguration des Storage-Dienstes steht, dem Client-Dienst
symbolisch \"{u}bergeben wird. Der Client-Dienst muss diesen Namen dann in eine g\"{u}ltigen IP-Adresse aufl\"{o}sen k\"{o}nnen.
Aus diesem Grund muss hier etweder eine IP-Adresse oder ein voll qualifizierter Rechnername stehen. Ein Name wie {\bf localhost}
ist nicht g\"{u}ltig und wird auf dem Client auf den Namen des localhost des Clients aufge\"{o}st. Das Passwort des Client-Dienstes
um sich am Storage-Dienst anzumelden ist tempor\"{a}r und wird dynamisch f\"{u}r jeden einzelnen Job erzeugt. Es steht also in keiner
der  .conf-Dateien.

\section{detailierte Information f\"{u}r jeden Dienst}
\index[general]{detailierte Information f\"{u}r jeden Dienst }
\index[general]{Dienst!detailierte Information f\"{u}r jeden }

Die Details f\"{u}r jeden Konfigurations-Eintrag und die darin g\"{u}ltigen Parameter sind in den folgenden Kapiteln beschrieben.

Die folgenden Konfigurations-Dateien m\"{u}{\ss}en definiert werden:

\begin{itemize}
\item 
   \ilink{bconsole.conf}{ConsoleConfChapter} -- um die Konfiguration f\"{u}r das Console-Programm zu definieren
(die Benutzerschnittstelle zum Director-Dienst). Hier wird angegeben welche Director-Dienste verf\"{u}gbar sind, um mit ihnen zu arbeiten.
   \item 
   \ilink{bacula-dir.conf}{DirectorChapter} -- um die Konfiguration des Director-Dienstes zu definieren. In dieser Datei geben Sie alle Storage- und
Client-Dienste an.
\item 
   \ilink{bacula-fd.conf}{FiledConfChapter} -- um die Konfiguration des Clients zu definieren. Diese Datei wird auf jedem Backup-Client ben\"{o}tigt.
\item 
   \ilink{bacula-sd.conf}{StoredConfChapter} -- um die Konfiguration des Storage-Dienstes zu definieren. Normalerweise werden Sie einen Storage-Dienst
haben, der Ihr Bandlaufwerk steuert. Wenn Sie mehrere Rechner mit angeschlossenen Bandlaufwerken haben, ben\"{o}tigen Sie nat\"{u}rlich einen Storage-Dienst
pro Rechner.
\end{itemize}
