%%
%%

\chapter{Kurzanleitung}
\label{TutorialChapter}
\index[general]{Kurzanleitung}

Diese Kapitel soll Ihnen helfen Bacula in Betrieb zu nehmen.
Dazu wird vorrausgesetzt, dass Sie Bacula installiert aber noch keine
\"{A}nderungen an den Konfigurations-Dateien (.conf) vorgenommen haben.
Falls Sie schon \"{A}nderungen durchgef\"{u}hrt haben, deinstallieren Sie
Bacula und installieren es erneut. Alle Beispiele in diesem Kapitel gehen
von der Standard-Konfiguration nach der Installation aus. Wenn Sie Bacula
in Ihrem Home-Verzeichnis installiert haben, sind keine root-Rechte notwendig
um den Beispielen zu folgen. Alle Volumes werden in /tmp erstellt und es wird nur
das Verzeichnis mit dem Bacula-Quelltext gesichert. Beachten Sie bitte, dass
bei produktiven Installationen zumindest der Bacula-Client-Dienst (bacula-fd)
als Benutzer root laufen muss. Mehr Informationen dazu finden Sie im Kapitel
\"{u}ber Sicherheitsbelange im Bacula-Installations-Handbuch..

Der generelle Ablauf ist folgender:

\begin{enumerate}
\item cd \lt{}Installations-Verzeichnis\gt{}  
\item starten Sie die Datenbank (falls Sie MySQL oder PostgreSQL benutzen)
\item starten Sie die Bacula-Dienste mit {\bf ./bacula start}  
\item starten Sie das Console-Programm um den Director-Dienst bedienen zu k\"{o}nnen
\item starten Sie einen Backup-Job
\item Wenn das Volume voll ist, m\"{u}ssen Sie es unmounten, falls es ein Tape ist,
   m\"{u}ssen Sie ein neues labeln. Allerdings wird in diesem Kapitel nur mit 
   Festplatten-Volumes gearbeitet, so dass Sie sich im Moment noch keine Gedanken
   um Tape machen m\"{u}ssen.
\item versuchen Sie einige der gerade gesicherten Dateien wiederherzustellen.
   Stellen Sie dabei sicher, dass die Dateien dabei korrekt verarbeitet werden.
   Es ist besser jetzt zu testen, als auf den Ernstfall zu warten.
\item f\"{u}gen Sie einen zweiten Client hinzu.
   \end{enumerate}

Jeder dieser Schritte wird im folgenden ausf\"{u}hrlich erkl\"{a}rt.

\section{Vor dem Start von Bacula}
\index[general]{Bacula!vor dem Start }
\index[general]{Vor dem Start von Bacula}

% TODO: some of this content is already covered once or twice critical
% TODO: or quickstart. Consolidate!

Bevor Sie Bacula das erste Mal in der Produktion einsetzen, empfehlen wir
Ihnen das {\bf test}-Kommando des btape-Programms auszuf\"{u}hren.
Die Beschreibung dazu finden Sie im Kapitel {\bf btape} des Handbuchs
\"{u}ber die Bacula-Dienstprogramme. Dadurch k\"{o}nnen Sie sicherstellen,
dass Bacula ordnungsgem\"{a}{\ss} mit Ihrem Bandlaufwerk zusammenarbeitet.
Wenn Sie ein modernes HP, Quantum oder Sony DDS- oder DLT-Laufwerk unter
Linux verwenden, k\"{o}nnen Sie diesen Test auslassen, da diese Kombination
im Normalfall immer funktionieren. In allen anderen F\"{a}llen sollten Sie
diesen Tests aber durchf\"{u}hren bevor Sie hier weitermachen. Innerhalb
des btape-Programms k\"{o}nnen Sie auch mittels des {\bf fill}-Kommandos
das Vollschreiben eines Tapes simulieren, so dass Bacula ein neus Tape laden
muss, um den Test fortzusetzen. Bedenken Sie aber, dass ein solcher Test mehrere
Stunden dauern kann, abh\"{a}ngig von der Speicherkapazit\"{a}t Ihres Bandlaufwerks.

\section{Starten der Datenbank}
\label{StartDB}
\index[general]{Starten der Datenbank}
\index[general]{Datenbank!Starten der }

Wenn Sie MySQL oder PostgreSQL als Katalog-Datenbank benutzen, m\"{u}ssen
Sie die Datenbank vor Bacula starten. Andernfalls werden Sie beim Start von
Bacula Fehlermeldungen erhalten. Um Ihre lokale MySQL-Instanz zu starten oder
zu stoppen, k\"{o}nnen Sie die Scripte {\bf startmysql} und {\bf stopmysql}
aus dem Bacula-Quelltext verwenden. Im Falle von SQLite ist kein Start der
Datenbank notwendig, dass wird beim Start von Bacula automatisch getan.
In Produktionsumgebungen sollten Sie sicherstellen, dass Ihre Katalog-Datenbank
im Falle eines Reboots vor dem Bacula-Diensten gestartet wird.

\section{Starten der Bacula-Dienste}
\label{StartDaemon}
\index[general]{Starten der Bacula-Dienste }
\index[general]{Bacula-Dienste!Starten der }

Wenn Sie Bacula aus dem Quelltext \"{u}bersetzt oder die rpm-Pakete
installiert haben, k\"{o}nnen Sie die drei Bacula-Dienste einfach
durch Eingabe von:

./bacula start

im Installations-Verzeichnis starten.

Dieses Script starten den Storage-, File- und Director-Dienst, die danach
im Hintergrund ausgef\"{u}hrt werden. Wenn Sie die Autostart-Scripte mitinstalliert
haben, k\"{o}nnen Sie Bacula automatisch beim Rechnerstart oder auch gezielt
\"{u}ber {\bf bacula-dir}, {\bf bacula-fd} und {\bf bacula-sd} im Verzeichnis
{\bf /etc/init.d}, die einzelnen Dienste starten und stoppen.

Wie Sie die Dienste unter Windows starten und anhalten k\"{o}nnen, finden
Sie im Kapitel "`Die Windows-Version von Bacula"' in diesem Handbuch.

Bei der Installation der rpm-Pakete werden die Dienste so konfiguriert,
dass sie unter der Gruppe bacula als Benutzer root ausgef\"{u}hrt werden.
Die Gruppe bacula wird dabei, falls notwendig, automatisch erstellt.
Alle Benutzer die der Gruppe bacula angeh\"{o}ren haben Zugriff auf alle
Dateien die die Dienste anlegen. Um das abzu\"{a}ndern, m\"{u}ssen Sie diese
Start-Scripte entsprechend anpassen:

\begin{itemize}
\item /etc/bacula/bacula 
\item /etc/init.d/bacula-dir 
\item /etc/init.d/bacula-sd 
\item /etc/init.d/bacula-fd 
\end{itemize}

und Bacula, wie oben beschrieben, neu starten.

Im Bacula-Installations-Handbuch wird beschrieben, welche Schritte
durchzuf\"{u}hren sind, um Bacula automatisch beim booten des Systems
zu starten.

\section{Starten der Console}
\index[general]{Console!Starten der}
\index[general]{Starten der Console}
% TODO: section name is too long; maybe use "Using the Console Program" ??

Um den Status von Jobs abzufragen oder um neue Jobs zu starten m\"{u}ssen Sie
, aus dem Installationsverzeichnis, das Console-Programm starten:

./bconsole 

Alternativ zu diesem Kommando k\"{o}nnen Sie auch das Bacula-Administration-Tool
verwenden. Das setzt vorraus, dass Sie Qt4 installiert und bei der Konfiguration des
Bacula-Quelltextes die Option {\bf \verb:--:enable-bat} angegeben haben.
Starten Sie bat mit:

./bat

bat bietet Ihnen eine graphische Benutzerschnittstelle zum Director-Dienst
und wesentlich mehr Funktionen als die bconsole.

Weitere M\"{o}glichkeiten sind die GNOME-Konsole {\bf bgnome-console} oder
das wxWidgets-Programm {\bf bwx-console}.

Der Einfachheit halber wird hier nur die bconsole beschrieben. Die meisten
Kommandos k\"{o}nnen Sie aber in identischer Form auch mit bat, bgnome-console
und der bwx-console ausf\"{u}hren.

Das Befehl ./bconsole startet das Console-Programm das sich mit dem
Bacula-Director-Dienst verbindet. Da Bacula ein netzwerkf\"{a}higes Programm ist,
k\"{o}nnen Sie die Console auf einem beliebigen Computer starten. Meistens wird
es aber auf derselben Maschine, auf der auch der Director-Dienst l\"{a}uft,
ausgef\"{u}hrt. Beim starten gibt die Console folgendes aus:

\footnotesize
\begin{verbatim}
[kern@polymatou bin]$ ./bconsole
Connecting to Director lpmatou:9101
1000 OK: HeadMan Version: 2.1.8 (14 May 2007)
*
\end{verbatim}
\normalsize

Der Stern ist das Console-Prompt.

Geben Sie {\bf help} ein, um eine Liste der verf\"{u}gbaren Kommandos zu erhalten:

\footnotesize
\begin{verbatim}
*help
  Command    Description
  =======    ===========
  add        add media to a pool
  autodisplay autodisplay [on|off] -- console messages
  automount  automount [on|off] -- after label
  cancel     cancel [<jobid=nnn> | <job=name>] -- cancel a job
  create     create DB Pool from resource
  delete     delete [pool=<pool-name> | media volume=<volume-name>]
  disable    disable <job=name> -- disable a job
  enable     enable <job=name> -- enable a job
  estimate   performs FileSet estimate, listing gives full listing
  exit       exit = quit
  gui        gui [on|off] -- non-interactive gui mode
  help       print this command
  list       list [pools | jobs | jobtotals | media <pool=pool-name> |
files <jobid=nn>]; from catalog
  label      label a tape
  llist      full or long list like list command
  memory     print current memory usage
  messages   messages
  mount      mount <storage-name>
  prune      prune expired records from catalog
  purge      purge records from catalog
  python     python control commands
  quit       quit
  query      query catalog
  restore    restore files
  relabel    relabel a tape
  release    release <storage-name>
  reload     reload conf file
  run        run <job-name>
  status     status [[slots] storage=<name> | dir | client]=<name>
  setdebug   sets debug level
  setip      sets new client address -- if authorized
  show       show (resource records) [jobs | pools | ... | all]
  sqlquery   use SQL to query catalog
  time       print current time
  trace      turn on/off trace to file
  unmount    unmount <storage-name>
  umount     umount <storage-name> for old-time Unix guys
  update     update Volume, Pool or slots
  use        use catalog xxx
  var        does variable expansion
  version    print Director version
  wait       wait until no jobs are running [<jobname=name> | <jobid=nnn> | <ujobid=complete_name>]
*
\end{verbatim}
\normalsize

Im Bacula-Console-und-Benutzer-Handbuch finden Sie eine detaillierte
Beschreibung aller Kommandos.

\section{Starten des ersten Jobs}
\label{Running}
\index[general]{Job!Starten des ersten }
\index[general]{Starten des ersten Jobs }

An diesem Punkt gehen wir von folgenden Voraussetzungen aus:

\begin{itemize}
\item Der Bacula-Quelltext wurde konfiguriert mit {\bf ./configure \verb:--:Ihre-Optionen} 
\item Der Quelltext wurde \"{u}bersetzt, mit {\bf make} 
\item Bacula ist installiert worden, mit {\bf make install} 
\item Sie haben die Bacula-Datenbank erstellt, z.B. mit
   {\bf./create\_sqlite\_database} 
\item Sie haben die notwendigen Tabellen erstellt, z.B. mit
   {\bf ./make\_bacula\_tables} 
\item Sie haben eventuell die Director-Dienst-Konfiguration ({\bf bacula-dir.conf})
   an Ihr System angepasst. Beachten Sie bitte, dass wenn Sie den Director-Namen
   \"{a}ndern, dass Sie ihn dann in allen Konfigurations-Dateien anpassen m\"{u}ssen.
   F\"{u}r den Augenblick ist es einfacher, die Konfigurations-Dateien nicht zu \"{a}ndern.
\item Sie haben Bacula gestartet, mit {\bf ./bacula start}  
\item Sie haben mit {\bf ./bconsole} das Console-Programm gestartet.
\end{itemize}

Weiterhin nehmen wir an, dass Bacula mit der Standard-Konfiguration l\"{a}uft.

Geben Sie das folgende Kommando in der Console ein:

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

und Sie bekommen, in etwa, diese Ausgaben angezeigt:

\footnotesize
\begin{verbatim}
FileSet: name=Full Set
      O M
      N
      I /home/bacula/regress/build
      N
      E /proc
      E /tmp
      E /.journal
      E /.fsck
      N
FileSet: name=Catalog
      O M
      N
      I /home/bacula/regress/working/bacula.sql
      N
\end{verbatim}
\normalsize

Was Sie sehen ist ein vordefiniertes FileSet namens "`Full Set"',
dass das Verzeichnis mit Ihrem Bacula-Quelltext sichert.
Der angeteigte Verzeichnisname ist abh\"{a}ngig von Ihrer
Konfiguration. Zum Testen ist das ein gutes Verzeichnis,
es ist von angemessener Gr\"{o}{\ss} und enth\"{a}lt gen\"{u}gend Dateien,
ohne zu un\"{u}bersichtlich zu sein. Das zweite angezeigte FileSet,
namens "`Catalog"', wird benutzt um die Katalog-Datenbank zu sichern,
aber das ist im Moment noch nicht von Interesse. Alle Eintr\"{a}ge mit {\bf I}
bezeichnen Verzeichnisse oder Dateien die vom Job "`included"', also gesichert
werden sollen. Die {\bf E}-Eintr\"{a}ge bezeichnen Dateien und Verzeichnisse
die "`excluded"', also nicht gesichert werden sollen. Eintr\"{a}ge mit {\bf O}
geben FileSet-Optionen an. Die FileSet-Eintr\"{a}ge k\"{o}nnen in der Konfigurations-Datei
des Director-Dienstes angepasst werden. Das passiert innerhalb des FileSet-Eintrags
bei den Zeilen die mit {\bf File=} beginnen.

Jetzt k\"{o}nnen Sie Ihren ersten Backup-Job starten. Der Job wird das Verzeichnis
mit dem Bacula-Quelltext auf ein Festplatten-Volume unterhalb von /tmp sichern.
Geben Sie bitte folgendes Kommando ein:

\footnotesize
\begin{verbatim}
status dir
\end{verbatim}
\normalsize

und Sie erhalten diese Ausgaben: 

\footnotesize
\begin{verbatim}
rufus-dir Version: 1.30 (28 April 2003)
Daemon started 28-Apr-2003 14:03, 0 Jobs run.
Console connected at 28-Apr-2003 14:03
No jobs are running.
Level          Type     Scheduled          Name
=================================================================
Incremental    Backup   29-Apr-2003 01:05  Client1
Full           Backup   29-Apr-2003 01:10  BackupCatalog
====
\end{verbatim}
\normalsize

wobei die Uhrzeiten, Director-Version und -Name bei Ihrer Installation
wahrscheinlich abweichen. Die Ausgabe zeigt Ihnen, dass ein inkrementeller
Backup-Job f\"{u}r den Client "`Client1"' um 01:05 Uhr geplant ist. Danach,
um 01:10 Uhr, wird ein Voll-Backup der Katalog-Datenbank ausgef\"{u}hrt.
Bevor Sie sp\"{a}ter weitere Clients zu Ihrer Konfiguration hinzuf\"{u}gen,
sollten Sie den Namen "`Client1"' z.B. auf den Namen Ihres Computers setzen,
ansonsten kann es mit mehreren Clients un\"{u}bersichtlich werden.

Geben Sie jetzt

\footnotesize
\begin{verbatim}
status client
\end{verbatim}
\normalsize

ein um sich den Status Ihres Clients anzeigen zu lassen:

\footnotesize
\begin{verbatim}
The defined Client resources are:
     1: rufus-fd
Item 1 selected automatically.
Connecting to Client rufus-fd at rufus:8102
rufus-fd Version: 1.30 (28 April 2003)
Daemon started 28-Apr-2003 14:03, 0 Jobs run.
Director connected at: 28-Apr-2003 14:14
No jobs running.
====
\end{verbatim}
\normalsize

In diesem Beispiel heisst der Client "`rufus-fd"'. Da nur ein Client konfiguriert
ist, w\"{a}hlt Bacula ihn automatisch aus und zeigt den Status an. Die Ausgaben
ab der Zeile {\bf rufus-sd Version: ...} stammen vom Client, so das Sie sicher
sein k\"{o}nnen, dass der Bacula-Client-Dienst auf dieser Maschine korrekt
ausgef\"{u}hrt wird.

Abschlie{\ss}end lassen Sie sich noch den Status des Storage-Dienstes anzeigen.
Geben Sie dazu folgendes Kommando ein:

\footnotesize
\begin{verbatim}
status storage
\end{verbatim}
\normalsize

und Sie sehen: 

\footnotesize
\begin{verbatim}
The defined Storage resources are:
     1: File
Item 1 selected automatically.
Connecting to Storage daemon File at rufus:8103
rufus-sd Version: 1.30 (28 April 2003)
Daemon started 28-Apr-2003 14:03, 0 Jobs run.
Device /tmp is not open.
No jobs running.
====
\end{verbatim}
\normalsize

Da es nur einen Storage-Eintrag gibt, wird dieser wieder automatisch von
Bacula ausgew\"{a}hlt. Momentan gibt es nur das Storage-Device {\bf /tmp},
welches nicht ge\"{o}ffnet ist und es laufen aktuell keine Jobs.

Jetzt starten Sie den ersten Job:

\footnotesize
\begin{verbatim}
run
\end{verbatim}
\normalsize

die folgende Meldung erscheint:

\footnotesize
\begin{verbatim}
Using default Catalog name=MyCatalog DB=bacula
A job name must be specified.
The defined Job resources are:
     1: Client1
     2: BackupCatalog
     3: RestoreFiles
Select Job resource (1-3):
\end{verbatim}
\normalsize

Da es mehr als einen Job-Eintrag in der Director-Dienst-Konfiguration gibt,
m\"{u}ssen Sie jetzt den gew\"{u}nschten ausw\"{a}hlen. Geben Sie bitte {\bf 1}
ein und Bacula zeigt Ihnen die Job-Details an:

\footnotesize
\begin{verbatim}
Run Backup job
JobName:  Client1
FileSet:  Full Set
Level:    Incremental
Client:   rufus-fd
Storage:  File
Pool:     Default
When:     2003-04-28 14:18:57
OK to run? (yes/mod/no):
\end{verbatim}
\normalsize

Bevor Sie fortfahren und den Job starten, sollten Sie sich die Ausgaben genau
ansehen und verstehen. Bacula fragt Sie, ob es OK ist den folgenden Job zu starten:
Der Name des Jobs ist {\bf Client1}, das FileSet hei{\ss}t {\bf Full Set} und
der Job wird mit dem Level {\bf Incremental} auf dem Client {\bf rufus-fd} laufen.
Die gesicherten Daten werden in den Pool {\bf Default} auf dem Storage {\bf File}
abgelegt und der Job wird sofort gestartet, da unter {\bf When} die aktuelle
Uhrzeit angezeigt wird.

Sie haben nun die Wahl den Job durch Eingabe von {\bf yes} zu starten
oder mittels {\bf mod} ein oder mehrere Job-Parameter anzupassen. Wenn Sie
{\bf no} eingeben wird der Job nicht gestartet. Geben Sie jetzt {\bf yes} ein,
danach sehen Sie sofort wieder die Eingabeaufforderung der Console, den Stern.
Nachdem Sie einige Sekunden gewartet haben, geben Sie bitte {\bf messages} ein
und Sie erhalten in etwa folgende Ausgabe:

\footnotesize
\begin{verbatim}
28-Apr-2003 14:22 rufus-dir: Last FULL backup time not found. Doing
                  FULL backup.
28-Apr-2003 14:22 rufus-dir: Start Backup JobId 1,
                  Job=Client1.2003-04-28_14.22.33
28-Apr-2003 14:22 rufus-sd: Job Client1.2003-04-28_14.22.33 waiting.
                  Cannot find any appendable volumes.
Please use the "label"  command to create a new Volume for:
    Storage:      FileStorage
    Media type:   File
    Pool:         Default
\end{verbatim}
\normalsize

Die erste Zeile zeigt Ihnen, dass kein vorheriges Voll-Backup des Clients gefunden
wurde, daher wird der Backup-Level des Jobs auf Full, statt Incremental, gesetzt.
Die zweite Zeile gibt an, dass der Job mit der Job-ID 1 gestartet wurde und
in der dritten Zeile sehen Sie die Meldung "`Cannot find any appendable volumes."'.
Das bedeutet, dass Bacula im Pool Default kein passendes Volume f\"{u}r diesen Job
gefunden hat. Zus\"{a}tzlich erscheint der Hinweis das Label-Kommando zu benutzen,
um ein Volume zu erstellen. Da dieser Schritt noch nicht ausgef\"{u}hrt wurde,
ist diese Meldung normal.

Der Job ist jetzt dadurch blockiert, dass er auf ein passendes Volume wartet.
Das k\"{o}nnen Sie \"{u}berpr\"{u}fen, inden Sie das Kommando {\bf status director}
ausf\"{u}hren. Damit der Job laufen kann muss zuerst ein Volume erstellt werden.
Dazu benutzen Sie das Kommando:

\footnotesize
\begin{verbatim}
label
\end{verbatim}
\normalsize

worauf Bacula folgendes ausgibt: 

\footnotesize
\begin{verbatim}
The defined Storage resources are:
     1: File
Item 1 selected automatically.
Enter new Volume name:
\end{verbatim}
\normalsize

Sie m\"{u}ssen jetzt einen Namen f\"{u}r das zu erstellende Volume w\"{a}hlen.
Volume-Namen sollten mit einem Buchstaben beginnen und d\"{u}rfen Buchstaben,
Zahlen sowie den Bindestrich, Unterstrich und den Punkt enthalten.
In diesem Beispiel geben Sie bitte den Namen {\bf TestVolume001} ein: 

\footnotesize
\begin{verbatim}
Defined Pools:
     1: Default
Item 1 selected automatically.
Connecting to Storage daemon File at rufus:8103 ...
Sending label command for Volume "TestVolume001" Slot 0 ...
3000 OK label. Volume=TestVolume001 Device=/tmp
Catalog record for Volume "TestVolume002", Slot 0  successfully created.
Requesting mount FileStorage ...
3001 OK mount. Device=/tmp
\end{verbatim}
\normalsize

Da nur ein Pool existiert, wird das neue Volume diesem automatisch zugeordnet.
Im Hintergrund wird der Job jetzt gestartet. Mit den Kommandos {\bf status director}
und {\bf status client} k\"{o}nnen Sie den Ablauf verfolgen. Wenn {\bf status director}
keine laufenden Jobs mehr auflistet k\"{o}nnen Sie sich mit dem Kommando
{\bf messages} die Ausgaben zu dem beendeten Job anzeigen lassen:

\footnotesize
\begin{verbatim}
28-Apr-2003 14:30 rufus-sd: Wrote label to prelabeled Volume
   "TestVolume001" on device /tmp
28-Apr-2003 14:30 rufus-dir: Bacula 1.30 (28Apr03): 28-Apr-2003 14:30
JobId:                  1
Job:                    Client1.2003-04-28_14.22.33
FileSet:                Full Set
Backup Level:           Full
Client:                 rufus-fd
Start time:             28-Apr-2003 14:22
End time:               28-Apr-2003 14:30
Files Written:          1,444
Bytes Written:          38,988,877
Rate:                   81.2 KB/s
Software Compression:   None
Volume names(s):        TestVolume001
Volume Session Id:      1
Volume Session Time:    1051531381
Last Volume Bytes:      39,072,359
FD termination status:  OK
SD termination status:  OK
Termination:            Backup OK
28-Apr-2003 14:30 rufus-dir: Begin pruning Jobs.
28-Apr-2003 14:30 rufus-dir: No Jobs found to prune.
28-Apr-2003 14:30 rufus-dir: Begin pruning Files.
28-Apr-2003 14:30 rufus-dir: No Files found to prune.
28-Apr-2003 14:30 rufus-dir: End auto prune.
\end{verbatim}
\normalsize

Hier sehen Sie verschiedene Angaben wie die Laufzeit, Datenrate, verwendete Volumes
und unter "`Termination"' das der Backup-Job erfolgreich gelaufen ist.
Nach der Eingabe von {\bf autodisplay on} gibt die Console wartende Benachrichtigungen
auch ohne Eingabe von {\bf messages} aus.

Wenn Sie sich den Inhalt des /tmp-Verzeichnisses mit ls -l anzeigen lassen,
sehen Sie das, mit dem Label-Kommando erstellte Volume:

\footnotesize
\begin{verbatim}
-rw-r-----    1 bacula     bacula     39072153 Apr 28 14:30 TestVolume001
\end{verbatim}
\normalsize

In diesem Festplatten-Volume wurden die Daten aus dem eben gelaufenen Job geschrieben.
Wenn Sie weitere Jobs starten, werden deren Daten an dieses Volume angeh\"{a}ngt.

Eventuell fragen Sie sich jetzt, ob Sie jedes Volume das Bacula benutzen soll,
auf die oben beschriebene Weise erstellen m\"{u}ssen. Bei Festplatten-Volumes,
wie eben benutzt, ist das nicht der Fall. Es ist m\"{o}glich Bacula so zu
konfigurieren, dass es automatisch neue Volumes erzeugt (labelt), wenn sie
ben\"{o}tigt werden. Bei Tape-Volumes ist das allerdings nicht der Fall,
diese m\"{u}ssen einzelnd gelabelt werden, bevor Bacula sie verwenden kann.

An dieser Stelle k\"{o}nnen Sie das Console-Programm mit {\bf quit} beenden
und die Bacula-Dienste mit {\bf ./bacula stop} anhalten. Fall Sie wieder von
Vorne anfangen m\"{o}chten, l\"{o}schen Sie das angelegte Volume mit {\bf rm
/tmp/TestVolume001} und reinitialisieren Sie Ihre Datenbank mit den Komandos:

\footnotesize
\begin{verbatim}
./drop_bacula_tables
./make_bacula_tables
\end{verbatim}
\normalsize

Dadurch werden alle Informationen zu allen gelaufenen Jobs endg\"{u}ltig gel\"{o}scht.
Zum Testen ist das duraus hilfreich, sp\"{a}ter in einer produktiven Umgebung werden Sie
das wahrscheinlich nicht ausf\"{u}hren wollen.

Wenn Sie versuchen wollen, die in diesem Beispiel gesicherten Daten wiederherzustellen,
lesen Sie bitte den folgenden Abschnitt.


\section{Wiederherstellung Ihrer Daten}
\label{restoring}
\index[general]{Daten!Wiederherstellung Ihrer }
\index[general]{Wiederherstellung Ihrer Daten }

Wenn Sie die standardm\"{a}{\ss}ige Konfiguration benutzt und wie oben beschrieben,
den Bacula-Quelltext gesichert haben, k\"{o}nnen Sie mit der Console diese Daten
auf dem folgenden Weg wiederherstellen:

\footnotesize
\begin{verbatim}
restore all
\end{verbatim}
\normalsize

worauf diese Auswahlliste erscheint:

\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

Wie Sie sehen k\"{o}nnen, haben Sie mehrere Optionen, aber in diesem
Beispiel w\"{a}hlen Sie bitte die {\bf 5}. Dadurch wird eine Wiederherstellung
des letzten Voll-Backups f\"{u}r einen anzugebenen Client ausgew\"{a}hlt:

\footnotesize
\begin{verbatim}
Defined Clients:
     1: rufus-fd
Item 1 selected automatically.
The defined FileSet resources are:
     1: 1  Full Set  2003-04-28 14:22:33
Item 1 selected automatically.
+-------+-------+----------+---------------------+---------------+
| JobId | Level | JobFiles | StartTime           | VolumeName    |
+-------+-------+----------+---------------------+---------------+
| 1     | F     | 1444     | 2003-04-28 14:22:33 | TestVolume002 |
+-------+-------+----------+---------------------+---------------+
You have selected the following JobId: 1
Building directory tree for JobId 1 ...
1 Job inserted into the tree and marked for extraction.
The defined Storage resources are:
     1: File
Item 1 selected automatically.
You are now entering file selection mode where you add and
remove files to be restored. All files are initially added.
Enter "done" to leave this mode.
cwd is: /
$
\end{verbatim}
\normalsize

Das es momentan nur einen Client, ein FileSet und ein Storage-Device gibt,
w\"{a}hlt Bacula automatisch die entsprechenden Eintr\"{a}ge aus. Zudem wird
aus allen Dateien des Jobs ein Verzeichnis-Baum aufgebaut, ein Abbild
der gesicherten Verzeichnis- und Datei-Struktur. Sie k\"{o}nnen jetzt
die Kommandos {\bf cd} und {\bf ls} oder {\bf dir} benutzen, um das Verzeichnis
zu wechseln oder sich den Inhalt auflisten zu lassen. Wenn Sie, zum Beispiel,
erst {\bf cd /home/bacula/bacula-2.4.1} wechseln (Ihr Pfad wird anders lauten)
und dann {\bf dir} ausf\"{u}hren, erhalten Sie eine Liste aller Dateien und
Verzeichnisse im Bacula-Quelltext-Verzeichnis. F\"{u}r weiter Informationen
lesen Sie bitte auch das Kapitel "`Wiederherstellung  von Daten"' in diesem
Handbuch.

Um diesen Auswahl-Modus zu beenden, geben Sie 

\footnotesize
\begin{verbatim}
done
\end{verbatim}
\normalsize

ein.
Danach sehen Sie diese Ausgaben:

\footnotesize
\begin{verbatim}
Bootstrap records written to
   /home/bacula/testbin/working/restore.bsr
The restore job will require the following Volumes:
   
   TestVolume001
1444 files selected to restore.
Run Restore job
JobName:         RestoreFiles
Bootstrap:      /home/bacula/testbin/working/restore.bsr
Where:          /tmp/bacula-restores
Replace:        always
FileSet:        Full Set
Backup Client:  rufus-fd
Restore Client: rufus-fd
Storage:        File
JobId:          *None*
When:           2005-04-28 14:53:54
OK to run? (yes/mod/no):
\end{verbatim}
\normalsize

Wenn Sie jetzt {\bf yes} eingeben, werden die Datein unterhalb von
{\bf /tmp/bacula-restores} wiederhergestellt. Dies ist der Standard f\"{u}r
die Wiederherstellung und l\"{a}sst sich \"{u}ber {\bf mod} und {\bf Where}
anpassen. Um die Dateien an ihrem originalen Ort widerherzustellen,
m\"{u}ssen Sie {\bf Where} entweder leer lassen oder auf {\bf /} setzen.
In diesem Beispiel antworten Sie bitte einfach mit {\bf yes} um die
Wiederherstellung zu starten. Warten Sie inene kurzen Moment und geben Sie
{\bf messages} ein. Wenn der Wiederherstellungs-Job beendet ist, sehen Sie
folgende Ausgaben:

\footnotesize
\begin{verbatim}
28-Apr-2005 14:56 rufus-dir: Bacula 2.1.8 (08May07): 08-May-2007 14:56:06
Build OS:               i686-pc-linux-gnu suse 10.2
JobId:                  2
Job:                    RestoreFiles.2007-05-08_14.56.06
Restore Client:         rufus-fd
Start time:             08-May-2007 14:56
End time:               08-May-2007 14:56
Files Restored:         1,444
Bytes Restored:         38,816,381
Rate:                   9704.1 KB/s
FD Errors:              0
FD termination status:  OK
SD termination status:  OK
Termination:            Restore OK
08-May-2007 14:56 rufus-dir: Begin pruning Jobs.
08-May-2007 14:56 rufus-dir: No Jobs found to prune.
08-May-2007 14:56 rufus-dir: Begin pruning Files.
08-May-2007 14:56 rufus-dir: No Files found to prune.
08-May-2007 14:56 rufus-dir: End auto prune.
\end{verbatim}
\normalsize

Nachdem Sie die Console verlassen haben, k\"{o}nnen Sie sich die
wiederhergestellten Dateien untehlab von /tmp/bacula-restores ansehen.
Um diese Dateien wieder zu l\"{o}schen, f\"{u}hren Sie :

\footnotesize
\begin{verbatim}
rm -rf /tmp/bacula-restore
\end{verbatim}
\normalsize

aus.

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

Die Console wird durch Eingabe von {\bf quit} beendet.

\section{Hinzuf\"{u}gen eines zweiten Clients}
\label{SecondClient}
\index[general]{Client!Hinuzf\"{u}gen eines zweiten }
\index[general]{Hinzuf\"{u}gen eines zweiten Clients }

Wenn Sie die oben beschriebenen Beispiele zur Sicherung und Wiederherstellung
nachvollziehen konnten, k\"{o}nnen Sie jetzt einen zweiten Client hinzuf\"{u}gen.
Daf\"{u}r ben\"{o}tigen Sie einen zweiten Computer den Sie sichern wollen.
Auf diesem Client m\"{u}ssen Sie nur den Bacula-Client-Dienst installieren,
{\bf bacula-fd} oder auf Windows {\bf bacula-fd.exe}, sowie eine passende
Konfigurations-Datei {\bf bacula-fd.conf}. Sie k\"{o}nnen als Vorlage die bereits 
bestehende Konfigurations-Datei Ihresersten Clients benutzen. \"{A}ndern Sie einfach
nur den Namen des Clients im Abschnitt "`FileDaemon"' der Datei.
Ein Beispiel, aus :

\footnotesize
\begin{verbatim}
...
#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = rufus-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /home/bacula/working
  Pid Directory = /var/run
}
...
\end{verbatim}
\normalsize

wird dabei: 

\footnotesize
\begin{verbatim}
...
#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = matou-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /home/bacula/working
  Pid Directory = /var/run
}
...
\end{verbatim}
\normalsize

wobei nur der Ausschnitt der Datei dargestellt wird, in dem die \"{A}nderung von
{\bf rufus-fd} zu {\bf matou-fd} gemacht wird. Alle anderen Eintr\"{a}ge
k\"{o}nnen im Moment so bleiben wie sie sind. Eventuell wollen Sie sp\"{a}ter
noch ein anderes Passwort f\"{u}r den zweiten Client verwenden. Die angepasste
Konfigurations-datei k\"{o}nnen Sie jetzt auf dem Client als {\bf bacula-fd.conf}
speichern. Des weiteren m\"{u}ssen Sie jetzt die Konfiguration des Bacula-Director-Dienstes
um die Eintr\"{a}ge f\"{u}r den neuen Client erweitern. Dazu kopieren Sie den
Job- und Client-Eintrag des {\bf rufus-fd} in der Director-Dienst-Konfiguration
{\bf bacula-dir.conf} und passen die Namen in den Eintr\"{a}gen entsprechend an:


\footnotesize
\begin{verbatim}
#
# Define the main nightly save backup job
#   By default, this job will back up to disk in /tmp
Job {
  Name = "Matou"
  Type = Backup
  Client = matou-fd
  FileSet = "Full Set"
  Schedule = "WeeklyCycle"
  Storage = File
  Messages = Standard
  Pool = Default
  Write Bootstrap = "/home/bacula/working/matou.bsr"
}
# Client (File Services) to backup
Client {
  Name = matou-fd
  Address = matou
  FDPort = 9102
  Catalog = MyCatalog
  Password = "xxxxx"                  # password for
  File Retention = 30d                # 30 days
  Job Retention = 180d                # six months
  AutoPrune = yes                     # Prune expired Jobs/Files
}
\end{verbatim}
\normalsize

Verwenden Sie bitte vollst\"{a}ndige Hostnamen f\"{u}r den Parameter
Address im Client-Eintrag, wenn Sie etwas wie "`localhost"' verwenden,
kann es zu Problem bei der Namensaufl\"{o}sung kommen. Teilweise werden
diese Parameter vom Director-Dienst zu den Client- oder Storage-Diensten
gesendet, wo die Aufl\"{o}sung von "`localhost"' dann etwas anderes
bewirkt als gewollt.

Damit sind alle notwendigen Schritte zur Definition des zweiten Clients
abgeschlossen. Die bestehende Konfiguration des Clients {\bf rufus-fd}
wurde kopiert und angepasst, so dass die Eintr\"{a}ge jetzt {\bf matou}
und {\bf matou-fd} hei{\ss}en. Ebenso wurden die Eintr\"{a}ge in der
Director-Dienst-Konfiguration kopiert und angepasst. Ge\"{a}dert haben
sich nur der Job-Name, der Client-Name und die Client-Adresse sowie
der Name der Bootstrap-Datei. Das bedeutet, dass der Client {\bf matou-fd}
zur selben Zeit in den selben Pool gesichert wird, wie der Client
{\bf rufus-fd}. Das k\"{o}nnen Sie sp\"{a}ter nat\"{u}rlich noch Ihren
Bed\"{u}rfnissen anpassen, aber f\"{u}r dieses Beispiel wollen wir
die Konfiguration so einfach wie m\"{o}glich belassen.

Damit der Director-Dienst die neue Konfiguration einliest, muss er entweder
neue gestartet werden, oder Sie rufen in der Console das Kommando {\bf reload} auf.
Jetzt ist alles notwendige getan, damit der zweite Client gesichert werden kann.


Die gr\"{o}sten Unterschiede zu einer produktiven Bacula-Installation sind
jetzt nur noch, dass alle (beiden) Clients in einen Pool und zur selben Zeit
gesichert werden. Aber das k\"{o}nen Sie jederzeit entsprechend umkonfigurieren.
Auf alle F\"{a}lle sollte aus Sicherheitsgr\"{u}nden das Passwort des zweiten
Clients noch ge\"{a}ndert werden.

Einige wichtige Tipps die die Namen und Passw\"{o}rter betreffen, sowie
ein Diagramm welche Namen und Passw\"{o}rter \"{u}bereinstimmen m\"{u}ssen,
finden Sie im Kapitel "`Autorisierungs-Probleme"' im Bacula-Fehlerdiagnose-Handbuch.

\section{Der erste Tape-Wechsel}
\label{FullTape}
\index[general]{Tape-Wechsel!der erste }
\index[general]{Der erste Tape-Wechsel }

Wenn die geplanten Backup-Jobs laufen, typischerweise Nachts, wird irgendwann
das Tape, beziehungsweise das Festplatten-Volume, vollgeschrieben sein.
Bacula kann keine weiteren Daten auf dem Laufwerk schreiben und gibt eine
Meldung, \"{a}hnlich der folgenden, aus:

\footnotesize
\begin{verbatim}
rufus-sd: block.c:337 === Write error errno=28: ERR=No space left
          on device
\end{verbatim}
\normalsize

Daran k\"{o}nnen Sie erkennen, dass ein Schreibfehler auf dem Ger\"{a}t
aufgetreten ist, die Fehlerbeschreibung lautet "`kein freier Platz mehr auf dem Ger\"{a}t.
Bacula versucht jetzt im entsprechenden Pool ein Volume zu finden, auf dem das Backup
weiterlaufen kann. Im besten Fall sind in dem Pool alte Volumes verf\"{u}gbar,
deren Aufbewahrungs-Zeitraum abgelaufen ist. Bacula wird dann das \"{a}lteste Volume
automatisch wiederverwenden und \"{u}berschreiben. Weitere Informationen dazu
finden Sie im Kapitel \"{u}ber automatisches Volume Recycling im Handbuch "'Bacula
Konzepte und \"{U}berblick"`. Falls Ihre Volumes, eventuell durch einen Konfigurations-Fehler,
nicht automatisch \"{u}berschrieben werden, finden Sie im selben Kapitel unter "'manuelle
Wiederverwendung der Volumes"` Hilfe.

Wenn Bacula kein Volume im Pool findet auf dem das Backup fortgesetzt werden kann,
erhalten Sie folgende Benachrichtigung:

\footnotesize
\begin{verbatim}
rufus-sd: Job kernsave.2002-09-19.10:50:48 waiting. Cannot find any
          appendable volumes.
Please use the "label"  command to create a new Volume for:
    Storage:      SDT-10000
    Media type:   DDS-4
    Pool:         Default
\end{verbatim}
\normalsize

Solange Sie kein neues Volume erstellen, wiederholt Bacula diese Meldung
erst st\"{u}ndlich, dann zwei-st\"{u}ndlich und so weiter, in immer doppelten
Zeitabst\"{a}nden. Der maximale Interval betr\"{a}gt dabei 24 Stunden.

Jetzt stellt sich nat\"{u}rlich die Frage: Was tun?

Die Antwort ist einfach: Starten Sie das Console-Programm und geben Sie das
Laufwerk mit dem {\bf unmount}-Kommando frei. Wenn Sie nur ein einzelnes
Laufwerk haben, wird Bacula das automatisch ausw\"{a}hlen, falls Sie mehrere
Laufwerke haben, achten Sie darauf, dass Sie das freigegeben welches in der
Benachrichtigung erw\"{a}hnt ist. In diesem Beispiel {\bf SDT-10000}.

Als n\"{a}chtes entfernen Sie das volle Volume aus dem Ger\"{a}t und legen
ein Neues ein. Auf einigen \"{a}lteren Laufwerken m\"{u}ssen Sie vorher eine
"'EOF"`- (End of File) Markierung schreiben, damit das Band nicht losl\"{a}uft,
wenn Bacula versucht das Label zu lesen.

Anschlie{\ss}end benutzen Sie das {\bf label}-Kommando um das neue Volume zu labeln.
Das label-Kommando veranla{\ss}t den Storage-Dienst eine Software-Markierung auf
das Volume zu schreiben. Wenn das erfolgreich war, wird das neue Volume dem
entsprechendem Pool zugeordnet und das Volume in das Laufwerk geladen. Weiter oben
in diesem Kapitel finden Sie weitere Information bez\"{u}glich des label-Kommandos.

Das Ergebnis ist, dass Bacula den Backup-Job mit dem neuen Volume fortsetzen kann.

Wenn Sie einen Pool haben dessen Volumes periodisch wiederverwendet werden,
kann statt der Meldung "'Cannot find any appendable volumes"` auch die
Aufforderung kommen, ein bestimmtes Volume zu mounten. In diesem Fall
solten Sie genau dies auch tun. Falls das angefragte Volume, aus welchen
Gr\"{u}nden auch immer, nicht mehr zur Verf\"{u}gung steht, k\"{o}nnen Sie
auch ein anderes beschreibbares Volume aus dem entsprechenden Pool mounten.
Im Console-Programm k\"{o}nnen Sie das Kommando {\bf list volumes} verwenden,
um ein passendes Volume zu suchen.

Falls, trotz korrekt konfigurierter Aufbewahrungszeitr\"{a}ume, f\"{u}r
einen Pool kein freies Volume mehr zur Verf\"{u}gung steht, k\"{o}nnen Sie
ein Volume auf die folgende Art zur Wiederverwendung freigeben:

\begin{itemize}
\item Benutzen Sie das {\bf list volumes}-Kommando um das \"{a}lteste Volume
   im Pool zu finden.
\item Benutzen Sie das {purge volume}-Kommando um alle mit diesem Volume
   verkn\"{u}pften Eintr\"{a}ge aus der Katalog-Datenbank zu l\"{o}schen.
\item Danach ist der Volume-Status "'recycle"` und das Volume kann
   wiederverwendet werden 
   \end{itemize}

Wenn es notwendig ist, dem Volume ein neues Label zu verpassen,
folgen Sie bitte diesen zus\"{a}tzlichen Schritten:

\begin{itemize}
\item verwenden Sie zuerst das {\bf delete volume}-Kommando um das Volume
   und alle sich darauf beziehenden Eintr\"{a}ge aus der katalog-Datenbank
   zu l\"{o}schen
\item laden Sie das, aus der Datenbank gel\"{o}schte, Volume in das Laufwerk 
\item Von der Kommmandozeile aus benutzen Sie folgende Befehle um das
   bestehende Bacula-Volume-Label zu \"{u}berschreiben:
   {\bf mt \ -f \ /dev/st0 \ rewind} und  {\bf mt \ -f \ /dev/st0 \ weof},
   wobei Sie nat\"{u}rlich den korrekten Device-Namen f\"{u}r Ihr System
   benutzen m\"{u}ssen
\item Dann k\"{o}nnen Sie, wie gewohnt, in dem Console-Programm das
   {\bf label}-Kommando benutzen um das neue Volume-Label zu erstellen.
\item Falls das Volume danach nicht automatischin das Laufwerk geladen wird,
   benutzen Sie daf\"{u}r das {\bf mount}-Kommando.
   \end{itemize}

\section{andere n\"{u}tzliche Consolen-Kommandos}
\index[general]{Consolen-Kommandos!andere n\"{u}tzliche }
\index[general]{andere n\"{u}tzliche Consolen-Kommandos }

\begin{description}

\item [status dir]
   \index[console]{status dir }
   Gibt den Status des Director-Dienstes, mit allen laufenden und f\"{u}r die
   n\"{a}chsten 24 Stunden geplanten Jobs, aus.
\item [status]
   \index[console]{status }
   Gibte eine Liste aller Dienste aus, deren Status abfragbar ist.
\item [status jobid=nn]
   \index[console]{status jobid }
   Gibt den Status eines laufenden Jobs mit der entsprechenden Job-ID aus.
\item [list pools]
   \index[console]{list pools }
   Gibt die Liste aller in der Katalog-Datenbank bekannten Pools aus.
\item [list media]
   \index[console]{list media }
   Gibt die Liste aller im Katalog definierten Volumes aus.
\item [list jobs]
   \index[console]{list jobs }
   Gibt die Liste aller gelaufenen Jobs aus.
\item [list jobid=nn]
   \index[console]{list jobid }
   Zeigt den Katalog-Eintrag der angegebenen Job-ID an.
\item [list jobtotals]
   \index[console]{list jobtotals }
   Gibt eine Liste mit \"{U}bersichtswerten f\"{u}r alle Jobs aus.
\item [list files jobid=nn]
   \index[console]{list files jobid }
   Gibt die Liste der gesicherten Dateien und Verzeichnisse f\"{u}r
   die angegebene Job-ID aus.
\item [list jobmedia]
   \index[console]{list jobmedia }
   Zeigt die benutzten Volume-Namen f\"{u}r alle Jobs im Katalog an.
\item [messages]
   \index[console]{messages }
   Gibt die wartenden Benachrichtigungen in der Console aus.
\item [unmount storage=storage-name]
   \index[console]{unmount storage }
   Gibt das angegebene Laufwerk, falls es nicht gerade benutzt wird.
   Diese Kommando kann benutzt werden um das Laufwerk zu leeren, wenn man ein freies
   Ger\"{a}t zum Beispiel zum labeln von neuen Tapes ben\"{o}tigt.
\item [mount storage=storage-name]
   \index[sd]{mount storage }
   L\"{a}dt ein anzugebenes Volume in das Laufwerk. Dieses Kommando wird ebenfalls
   nach einem Bandwechsel ausgef\"{u}hrt, nachdem Bacula die Meldung
   "'Please mount Volume xxx"` ausgegeben hat. Das Kommandos signalisiert Bacula
   das ein neues Volume im Laufwerk zur Verf\"{u}gung steht.
\item [quit]
   \index[sd]{quit }
   beendet das Console-Programm 
\end{description}

Die meisten oben genannten Kommandos werden Sie nach weiteren ben\"{o}tigten
Parameter fragen, wenn sie ohne welche aufgerufen werden.

\section{Debug-Ausgaben der Dienste}
\index[general]{Debug-Ausgaben der Dienste }
\index[general]{Ausgaben!Debug- Dienste }

Falls Sie die Debug-Ausgaben der Dienste im laufenden Betrieb sehen wollen,
k\"{o}nnen Sie sie, aus dem Installationsverzeichnnis, wie folgt starten:

\footnotesize
\begin{verbatim}
./bacula start -d100
\end{verbatim}
\normalsize

Die Ausgaben k\"{o}nnen hilfreich sein, falls die Dienste nicht korrekt starten.
Normalerweise werden diese Ausgaben auf /dev/null umgeleitet, erst bei einem
Debug-Level gr\"{o}{\ss}er als 0 werden sie auf dem Terminal ausgegeben.

Um alle drei Dienste wieder zu stoppen f\"{u}hren Sie :

\footnotesize
\begin{verbatim}
./bacula stop
\end{verbatim}
\normalsize

aus. Falls einer der Dienste nicht korrekt starten k\"{o}nnte, kann es sein,
dass beim stoppen eine Fehlermeldung bez\"{u}glich nicht gefundener PIDs
auftreten. Das ist aber ziemlich selten.

Um ein Systems komplett sichern zu k\"{o}nnen, muss der Client-Dienst
als Benutzer root laufen damit er die Berechtigung hat auf alle Dateien zuzugreifen.
Die anderen beiden Dienste, Storage- und Director-Dienst, ben\"{o}tigen diese
Berechtigung nicht. Allerdings braucht der Storage-Dienst Lese- und Schreibrechte
auf den Tape-Devices (zum Beispiel /dev/nstx). Auf vielen Systemen ist diser Zugriff
nur dem Benutzer root gestattet, so dass der Storage-Dienst entweder als root laufen muss
oder Sie m\"{u}ssen die Rechte auf den Devices so anpassen, dass auch normale Benutzer
Zugriff haben. Auch die Katalog-Datenbank kann im Falle von MySQL oder PostgreSQL
ohne root-Rechte laufen.

\section{Geduld wenn die Dienste starten oder neue Tapes eingelesen werden}

Wenn Sie die Dienste starten versucht der Storage-Dienst alle definierten
Storage-Ger\"{a}te zu \"{o}ffnen und die enthaltenen Volumes zu pr\"{u}fen.
Bis diese Vorg\"{a}nge abgeschlossen sind, nimmt der Storage-Dienst keine
Verbindungen vom Console-Programm entgegen. Falls ein bereits beschriebenes
Tape im Laufwerk ist, wird dieses zur\"{u}ckgespult, was bei einigen Laufwerken
mehrere Minuten dauern kann. Daher brauchen Sie etwas Geduld wenn Sie nach dem
starten der Dienste den Storage-Dienst kontaktieren wollen. Falls Sie Ihr
Tape-Laufwerk sehen k\"{o}nnen, erkennen Sie an den Lichter wann das Laufwerk
bereit ist.

Die selben Aspekte treffen zu, wenn Sie ein neues unbeschriebens Tape zum Beispiel
in ein HP-DLT-Laufwerk einlegen. Es kann ein bis zwei Minuten dauern bis das Laufwerk
erkennt, dass das Tape komplett leer ist. Wenn Sie schon innerhalb dieser Zeit
versuchen das Volume mit dm {\bf mount}-Kommando einzubinden, kann es sein das es
zu Problemen mit dem SCSI-Treiber kommt. Haben Sie also auch in disem Fall Geduld
und warten Sie ab bis das Laufwerk mit dem Einlesen des Tapes fertig ist,
bevor Sie darauf zugreifen.

\section{Verbindungsprobleme zwischen FD und SD}
\index[general]{Verbindungsproblem zwischen FD und SD}
\index[general]{SD!Verbindungsprobleme zwischen FD und SD}

Wenn Ihre Client-Dienste Problem haben sich mit dem Storage-Dienst zu verbinden
liegt das meistens daran, dass als {\bf Address} des Storage-Dienstes kein
vollst\"{a}ndig qualifizierter Domain-Name angegeben ist. Der Rechner auf dem der
Client-Dienst (nicht der Director-Dienst) l\"{a}uft muss in der Lage sein
diesen Namen in eine IP-Adresse aufzul\"{o}sen. Ein Name der zum Beispiel
auf dem Director-System funktionieren kann, aber garantiert nicht auf dem Client
ist {\bf localhost}. Die Angabe des Names ohne Domain, zum Beispiel {\bf megalon},
kann funktionieren, besser ist es jedoch den Namen mit Domain anzugeben :
{\bf megalon.ihredomain.de}. Probleme mit Windows-Client-Systemen k\"{o}nnen Sie
eventuell auch durch direkte Angabe der IP-Adresse als {\bf Address} umgehen.


Falls die konfigurierte {\bf Address} korrekt ist, aber trotzdem keine Verbindung
zustande kommt, sollten Sie \"{u}berpr\"{u}fen ob andere Programme den vom
Storage-Dienst ben\"{o}tigten Port 9103 benutzen. Die Bacula Port-Nummern sind zwar
alle durch die IANA zugewiesen und kein anderes Progrtamm sollte sie benutzen,
aber einige HP-Drucker benutzen sie zum Beispiel doch. Mittels {\bf netstat -a}
k\"{o}nnen Sie herrausfinden, welches Programm den Port 9103 ge\"{o}ffnet hat.

\section{Kommandozeilen-Optionen der Dienste}
\index[general]{Kommandozeilen-Optionen der Dienste }
\index[general]{Optionen!Kommandozeilen- der Dienste }

Jedem der drei Dienste (Director, File/Client und Storage) k\"{o}nnen beim
Start die folgenden Optionen, die auch beim Console-Programm funktionieren,
\"{u}bergeben werden:

\begin{description}

\item [-c \lt{}Datei\gt{}]
   \index[sd]{-c \lt{}Datei\gt{} }
   gibt eine Datei an die als Konfigurations-Datei verwendet werden soll.
   Standardm\"{a}{\ss}ig es ist der Dienst-Name gefolgt von {\bf .conf},
   also {\bf bacula-dir.conf} f\"{u}r den Director-Dienst, sowie
   {\bf bacula-sd.conf} und {bacula-fd.conf} f\"{u}r Storage- und Client/File-Dienst.

\item [-d nn]
   \index[sd]{-d nn }
   Setzt den Debug-Level auf {\bf nn}. Je h\"{o}her der Level desto mehr Debug-
   Ausgaben werden erzeugt.

\item [-f]
   Starte den Dienst im Vordergrund. Diese Option wird ben\"{o}tigt um die Dienste
   unter einem Debugger laufen zu lassen.

\item [-g <Gruppenname>]
   Durch Angabe eines Gruppen-Namens können Sie den Dienst
   unter einem anderen Gruppen-Konto laufen lassen.

\item [-s]
   Betriebssystem-Signale ignorieren. Diese Option wird ben\"{o}tigt um die Dienste
   unter einem Debugger laufen zu lassen.

\item [-t]
   Liest die Konfigurations-Dateien ein und beendet den Dienst sofort wieder.
   Dient dazu die Konfiguration auf Fehler hin zu \"{u}berpr\"{u}fen.

\item [-u <Benutzername>]
   Durch Angabe eines Benutzer-Namens können Sie den Dienst
   unter einem anderen Benutzer-Konto laufen lassen.

\item [-v]
   Gibt genauere Fehler- und Informations-Meldungen aus. Sollte immer angegeben werden.

\item [-?]
   Gibt die Version und die Liste der bekannten Optionen aus.
   \end{description}

\section{Einen Pool erstellen }
\label{Pool}
\index[general]{Pool!erstellen }
\index[general]{Einen Pool erstellen}

Die Erstellung der Pools erfolgt automatisch aufgrund der Pool-Konfiguration
wenn Bacula startet. Wenn Sie wissen was ein Pool ist, k\"{o}nnen Sie dieses
Kapitel \"{u}berspringen.

Eins der Dinge die Bacula wissen muss wenn ein Backup-Job startet ist,
welches Volume zur Sicherung verwendet werden soll. Anstelle eines einzelnen
Volumes wird in der Konfiguration ein Pool von Volumes angegeben, aus
dem Bacula sich ein beschreibbares Volume f\"{u}r den Job aussucht.
Bacula wird das erste verf\"{u}gbare Volume aus dem Pool w\"{a}hlen das
zu dem, in der Job-Konfiguration angegebenen, Storage-Device passt.
Nachdem das Volume vollgeschrieben wurde, setzt Bacula den Volume-Status
von {\bf Append} auf {\bf Full}, danach wird ein weiteres Volume aus dem Pool
benutzt um den Job fortzusetzen. Wenn kein passendes Volume mehr im Pool
verf\"{u}gbar ist, wird der Director versuchen ein Volume zu finden
dessen Daten bereits abgelaufen sind und das Volume recyclen. Wenn auch
das fehlscl\"{a}gt gibt Bacula eine Meldung aus mit dem Hinweis
ein neues Volume in dem Pool zu erstellen

Bacula beh\"{a}lt st\"{a}ndig die \"{U}bersicht \"{u}ber die Pools,
die Volumes in den Pools und die verschiedenen Eigenschaften der Volumes.

Wenn Bacula startet wird sichergestellt, dass alle Pool-Eintr\"{a}ge
aus der Konfiguration auch in der Katalog-Datenbank vorhanden sind.
Mit dem folgenden Console-Kommando k\"{o}nnen Sie das \"{u}berpr\"{u}fen:

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

in Abh\"{a}ngigkeit der konfigurierten Pools wird eine Liste wie diese angezeigt:

\footnotesize
\begin{verbatim}
*list pools
Using default Catalog name=MySQL DB=bacula
+--------+---------+---------+---------+----------+-------------+
| PoolId | Name    | NumVols | MaxVols | PoolType | LabelFormat |
+--------+---------+---------+---------+----------+-------------+
| 1      | Default | 3       | 0       | Backup   | *           |
| 2      | File    | 12      | 12      | Backup   | File        |
+--------+---------+---------+---------+----------+-------------+
*
\end{verbatim}
\normalsize

Wenn Sie versuchen einen bereits bestehenden Pool ein zweites Mal zu erstellen,
wird Bacula folgende Meldung ausgeben:

\footnotesize
\begin{verbatim}
Error: Pool Default already exists.
Once created, you may use the {\bf update} command to
modify many of the values in the Pool record.
\end{verbatim}
\normalsize


\section{Labeln der Volumes}
\label{Labeling}
\index[general]{Volumes!Labeln }
\index[general]{Labeln der Volumes }

Bacula ben\"{o}tigt auf jedem Volume ein Software-Label. Dabei gibt es verschiedene
M\"{o}glichkeiten das Label auf ein Volume zu schreiben. Sie k\"{o}nnen die Volumes
zum Beispiel labeln, wenn Bacula Sie mit einer entsprechenden Meldung dazu auffordert.
Mittels des Console-Kommandos {\bf label} erstellen Sie dann ein neues Volume im
entsprechenden Pool. Alternativ k\"{o}nnen Sie auch das Console-Kommando {\bf relabel}
verwenden um ein bereits abgelaufenens Volume, im Status "'purged"`, wiederzuverwenden.

Eine weitere Methode ist es viele Volumes zu labeln und dann nach und nach zu
benutzen, je nachdem wann Bacula ein neues Volume verlangt. Das wird meistens
bei Tape-Volumes gemacht die dann in einem Autochanger verwendet werden k\"{o}nnen.
Lesen Sie dazu auch das Kapitel "'automatisches Volume Wiederverwendung"` in diesem
Handbuch.

\section{Volumes mit dem Console-Programm labeln}
\index[general]{Volumes mit dem Console-Programm labeln }
\index[general]{Labeln!Volumes mit dem Console-Programm }

Zum labeln der Volumes wird normalerweise das Console-Programm verwendet.

\begin{enumerate}
\item ./bconsole
\item label
\end{enumerate}

Falls Bacula eine Meldung ausgibt, dass das Volume nicht gelabelt werden kann
da es bereits ein Label enth\"{a}lt, m\"{u}ssen Sie ein ungelabeltes Volume in
das Laufwerk einlegen.

Danach m\"{u}ssen Sie eins der konfigurierten Storage-Ger\"{a}te ausw\"{a}hlen
in dem das zu labelnde Volume ist, zum Beispiel:

\footnotesize
\begin{verbatim}
The defined Storage resources are:
     1: File
     2: 8mmDrive
     3: DLTDrive
     4: SDT-10000
Select Storage resource (1-4):
\end{verbatim}
\normalsize

In dem Ger\"{a}t das Sie jetzt ausw\"{a}hlen sollte ein neues ungelabeltes Volume sein.

Bacula fragt Sie nun nach dem Namen f\"{u}r das Volume:

\footnotesize
\begin{verbatim}
Enter new Volume name:
\end{verbatim}
\normalsize

Falls Bacula diese Meldung ausgibt:

\footnotesize
\begin{verbatim}
Media record for Volume xxxx already exists.
\end{verbatim}
\normalsize

bedeutet es, dass der von Ihnen eingegebene Volume-Name schon in der Katalog-Datenbank
existiert. Sie k\"{o}nnen sich alle definierten Volumes mit dem Kommando {\bf list media}
anzeigen lassen:

\footnotesize
\begin{verbatim}
+---------------+---------+--------+----------------+-----/~/-+------------+-----+
| VolumeName    | MediaTyp| VolStat| VolBytes       | LastWri | VolReten   | Recy|
+---------------+---------+--------+----------------+---------+------------+-----+
| DLTVol0002    | DLT8000 | Purged | 56,128,042,217 | 2001-10 | 31,536,000 |   0 |
| DLT-07Oct2001 | DLT8000 | Full   | 56,172,030,586 | 2001-11 | 31,536,000 |   0 |
| DLT-08Nov2001 | DLT8000 | Full   | 55,691,684,216 | 2001-12 | 31,536,000 |   0 |
| DLT-01Dec2001 | DLT8000 | Full   | 55,162,215,866 | 2001-12 | 31,536,000 |   0 |
| DLT-28Dec2001 | DLT8000 | Full   | 57,888,007,042 | 2002-01 | 31,536,000 |   0 |
| DLT-20Jan2002 | DLT8000 | Full   | 57,003,507,308 | 2002-02 | 31,536,000 |   0 |
| DLT-16Feb2002 | DLT8000 | Full   | 55,772,630,824 | 2002-03 | 31,536,000 |   0 |
| DLT-12Mar2002 | DLT8000 | Full   | 50,666,320,453 | 1970-01 | 31,536,000 |   0 |
| DLT-27Mar2002 | DLT8000 | Full   | 57,592,952,309 | 2002-04 | 31,536,000 |   0 |
| DLT-15Apr2002 | DLT8000 | Full   | 57,190,864,185 | 2002-05 | 31,536,000 |   0 |
| DLT-04May2002 | DLT8000 | Full   | 60,486,677,724 | 2002-05 | 31,536,000 |   0 |
| DLT-26May02   | DLT8000 | Append |  1,336,699,620 | 2002-05 | 31,536,000 |   1 |
+---------------+---------+--------+----------------+-----/~/-+------------+-----+
\end{verbatim}
\normalsize

Wenn Sie dann einen Namen eingegeben haben der noch nicht im Katalog vorhanden ist,
wird Bacula Sie als n\"{a}chstes nach dem Pool fragen in dem das neue Volume
erstellt werden soll. Wenn es nur einen Pool gibt, w\"{a}hlt Bacula diesen
automatisch aus.

Wenn das Volume dann erfolgreich gelabelt wurde, erstellt Bacula eine Katalog-Eintrag
f\"{u}r das neue Volume. Darin wird der Name des Volumes sowie alle seine Parameter
gespeichert. Zeitgleich wird das neue Volume auch f\"{u}r Backup-Jobs verf\"{u}gbar.

Beimlabeln m\"{u}ssen Sie nur sehr wenige Daten eingeben, den Volume-Namen,
den Pool und eventuell den Slot. Der Katalog-Eintrag f\"{u}r ein Volume enth\"{a}lt
aber sehr viel mehr Werte. Die meisten davon werden aus der Pool-Konfiguration gesetzt,
die f\"{u}r alle Volumes des Pools gilt. 

Sie k\"{o}nnen Volumes auch zum Pool hinzuf\"{u}gen ohne sie physikalisch labeln zu
m\"{u}ssen. Dazu kann das Console-Kommando {\bf add} verwendet werden.
Weitere Informationen dar\"{u}ber finden Sie im Kapitel "'Die Bacula Console"`
des "'Bacula Console- und Benutzer-Handbuchs"`.
