Unterabschnitte


Die Bacula Console

Die 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önnen sich zum Beispiel den Status eines bestimmten Jobs oder den Inhalt des Katalogs anzeigen lassen, sowie bestimmte Aktionen mit Tapes und Autochangern durchführen.

Zusätzlich gibt es noch die bwx-Console, die auf wxWidgets aufbaut und eine Möglichkeit bietet, den Wiederherstellungsprozeß graphisch zu steuern. Die bwx-Console befindet sich in einem frühen Entwicklungsstadium und wurde leider seit einiger Zeit nicht weiterentwickelt. (Trotzdem kann sie sehr hilfreich sein.)

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

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

Console Konfiguration

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

Benutzung des Console-Programms

Das Console-Programm kann mit den folgenden Optionen gestartet werden:

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.

(*) Signale

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önnen in jeder Console einfach nur das Kommando eingeben, wenn weitere Parameter erforderlich sind, wird das Programm Sie danach fragen. Alternativ können Sie natürlich auch das komplette Kommando mit allen benötigten Parametern eingeben und ausführen. Das normale Befehlsformat ist dieses:

 <Kommando> <Parameter1>[=<Argument1>] <Parameter2>[=<Argument2>] ...

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

Ein Beispiel:

list files jobid=23

zeigt alle gesicherten Dateien mit der JobID 23 an.

show pools

zeigt alle Pool-Konfigurations-Einträge an.

Die maximale Länge der eingegebenen Befehle, mit Parametern, ist 511 Zeichen. Falls Sie die Console über ein Script ansprechen, denken Sie bitte daran, dass Sie dieses Limit nicht überschreiten.

Beenden des Console-Programms

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

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

Alphabetische Liste der Console-Schlüsselwörter

Wenn es nicht anders angegeben ist, benötigt jedes der folgenden Schlüsselwörter (Parameter der Console-Befehle) ein Argument, welches dem Schlüsselwort, getrennt durch ein Gleichheitszeichen, folgt. Ein Beispiel:
jobid=536

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

all
Parameter des status und show-Kommandos, dadurch werden alle Komponenten oder Einträge ausgewählt
allfrompool
Parameter des update-Kommandos, gibt an das alle Volumes des (im Parameter pool angegebenen) Pools aktualisiert werden sollen.
allfrompools
Parameter des update-Kommandos, gibt an das alle Volumes aller Pools aktualisiert werden sollen.
before
Parameter des restore-Kommandos.
bootstrap
Parameter des restore-Kommandos.
catalog
im use-Kommando erlaubt, um den zu benutzenden Katalog auszuwählen
catalogs
Parameter des show-Kommandos. Benötigt keine Argumente.
client | fd
clients
Parameter des show, list und llist-Kommandos, bezeichnet alle Clients. Benötigt keine Argumente.
counters
im show-Kommando erlaubt. Benötigt keine Argumente.
current
Parameter des restore-Kommandos. Benötigt keine Argumente.
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ür die angegebene Anzahl Tage zu zeigen.
devices
Parameter des show-Kommandos. Benötigt keine Argumente.
director | dir
directors
Parameter des show-Kommandos. Benötigt keine Argumente.
directory
Parameter des restore-Kommandos. Das Argument gibt das wiederherzustellende Verzeichnis an.
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öscht. Volumes die nicht enabled sind, werden nicht für das Backup oder die Wiederherstellung benutzt.
done
wird im restore-Kommando benutzt. Benötigt keine Argumente.
file
Parameter des restore-Kommandos.
files
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
fileset
filesets
Parameter des show-Kommandos. Benötigt keine Argumente.
help
Parameter des show-Kommandos. Benötigt keine Argumente.
jobs
Parameter des show, list und llist-Kommandos. Benötigt keine Argumente.
jobmedia
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
jobtotals
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
jobid
Parameter des list und llist-Kommandos. Die jobid ist die numerische Jobid, die im Job-Report angezeigt wird. Sie ist der Index für die Datenbankeinträge des entsprechenden Jobs. Da sie fü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öscht wurde.
job | jobname
Parameter des list und llist-Kommandos. Der Job oder JobName entspricht dem Namen den Sie im Job-Einträg angegeben haben, somit bezieht er sich auf alle Jobs dieses Namens, die jemals gelaufen sind und deren Einträge noch im Katalog existieren.
level
listing
Parameter des estimate-Kommandos. Benötigt keine Argumente.
limit
messages
Parameter des show-Kommandos. Benötigt keine Argumente.
media
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
nextvol | nextvolume
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
on
Benötigt keine Argumente.
off
Benötigt keine Argumente.
pool
pools
Parameter des show, list und llist-Kommandos. Benötigt keine Argumente.
restart
Parameter des python-Kommandos, dadurch wird der python-Interpreter neu gestartet. Benötigt keine Argumente.
select
Parameter des restore-Kommandos. Benötigt keine Argumente.
storages
Parameter des show-Kommandos. Benötigt keine Argumente.
schedules
Parameter des show-Kommandos. Benötigt keine Argumente.
sd | store | storage
ujobid
Parameter des list-Kommandos. Die ujobid ist eine Möglichkeit einen Job eindeutig zu identifizieren. Momentan besteht die ujobid aus dem JobNamen und der Uhrzeit wann der Job gelaufen ist.
volume
volumes
Parameter des list und llist-Kommandos. Benötigt keine Argumente.
where
Parameter des restore-Kommandos.
yes
Parameter des restore-Kommandos. Benötigt keine Argumente.

Alphabetische Liste der Console-Kommandos

Die folgenden Kommandos sind derzeit verfügbar:

add [pool=<pool-name> storage=<storage> jobid=<JobId>]
Das add-Kommando wird benutzt um Volumes zu einem bestehenden Pool hinzuzufü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ü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ügt. Allerdings ist es hilfreich, falls Sie ein Volume aus dem Katalog gelöscht haben und es später wieder hinzufügen wollen.

Typischerweise wird das label-Kommando anstelle des add-Kommandos benutzt, da es außer dem labeln des physikalischen Volumes, die identischen Schritte wie das add-Kommando ausführt. Das add-Kommando ändert nur die Katalog-Einträge und nicht die physikalischen Volumes. Die physikalischen Volumes mü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ügen wollen, wobei die Volumes erst zu einem spä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ür einen Volume-Namen finden Sie weiter unten in der Beschreibung des label-Kommandos.

autodisplay on/off
Das autodisplay-Kommando kennt zwei Parameter: on und off, wodurch die automatische Anzeige von Nachrichten in der Console entsprechend ein- oder ausgeschaltet wird. Der Standardwert ist off, was bedeutet, dass Sie über neue Meldungen benachrichtigt werden, sie aber nicht automatisch angezeigt werden. In der GNOME-Console ist das automatische Anzeigen dagegen standardmäß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üssen Sie neue Nachrichten mit dem messages-Kommando abrufen, um sie sich anzeigen zu lassen. Wenn autodisplay auf on steht, werden die Nachrichten angezeigt, sobald die Console sie empfangen hat.

automount on/off
Das automount-Kommando kennt zwei Parameter: on und off, die entsprechend das automatische mounten nach dem labeln (label-Kommando) an- oder ausschalten. Der Standardwert ist on. Wenn automount ausgeschaltet ist, müssen Sie nach dem labeln eines Volumes dieses explizit mounten (mount-Kommando), um es benutzen zu können.

cancel [jobid=<number> job=<job-name> ujobid=<unique-jobid>]
Das cancel-Kommando wird benutzt um einen Job abzubrechen und kennt die Parameter jobid=nnn oder 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ählen.

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

create [pool=<pool-name>]
Das create-Kommando wird normalerweise nicht benutzt, da die Pool-Einträge im Katalog automatisch angelegt werden, wenn der Director-Dienst startet und er seine Pool-Konfiguration aus den Konfigurations-Dateien einliest. Falls benö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 übernimmt dieses Kommando nur den Pool-Eintrag aus der Konfiguration in die Datenbank. Normalerweise wird diese Kommando automatisch ausgeführt, wenn der Pool zum ersten mal in einem Job-Eintrag benutzt wird. Wenn Sie dieses Kommando auf einem bestehenden Pool ausführen, wird der Katalog sofort aktualisiert und enthält dann die identische Pool-Konfiguration, wie die Konfigurations-Dateien. Nach dem Erstellen eines Pool in den Konfigurations-Dateien werden Sie allerdings höchstwahrscheinlich das label-Kommando benutzen, um ein oder mehrere Volumes dem neuen Pool hinzuzufügen und die entsprechenden Einträ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öchten, dass der Pool-Eintrag sofort (ohne das ein Job mit diesem Pool gestartet wurde) im Katalog erscheint, können Sie einfach diese Kommando ausführen, um diesen Vorgang zu erzwingen.

delete [volume=<vol-name> pool=<pool-name> job jobid=<id>]
Das delete-Kommando wird benutzt um ein Volume, einen Pool oder einen Job-Eintrag, sowie jeweils alle dazugehörigen Datenbank-Einträge, aus dem Katalog zu entfernen. Das Kommando ä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 Volume angegeben wird, wird das entsprechende Volume aus dem Katalog gelöscht, wenn ein Pool angeben wird, der entsprechende Pool und bei Angabe des Parameters Job der entsprechende Job, sowie alle zu diesem Job gehöhrenden JobMedia- und Datei-Einträge. Das delete-Kommando kann folgendermaßen aufgerufen werden:

delete pool=<pool-name>  oder

delete volume=<volume-name> pool=<pool-name>  oder

delete JobId=<job-id> JobId=<job-id2> ...  oder

delete Job JobId=n,m,o-r,t ...

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

disable job<job-name>
Das disable-Kommando erlaubt es Ihnen zu verhindern, dass ein Job automatisch durch den Director-Dienst ausgefü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.

enable job<job-name>
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.

estimate
Mit dem estimate-Kommando können Sie sich anzeigen lassen, welche Dateien durch einen bestimmten Job gesichert werden, ohne diesen Job ausführen zu müssen. Standardmäßig wird dabei ein Voll-Backup angenommen. Sie können das aber durch den Parameter level entsprechend anpassen, indem Sie zum Beispiel level=Incremental oder level=Differential an das estimate-Kommando mit übergeben. Wenn Sie im Aufruf des Kommandos keinen Job-Name angegeben, wird die Console Ihnen eine Auswahlliste der möglichen Jobs anzeigen. Zusätzlich kö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öße zurückgibt. Bitte beachten Sie, dass das estimate-Kommando nur die Anzahl der von der Datei belegten Blöcke zur Bestimmung der Dateigröße einbezieht, so dass die Datenmenge, die das estimate-Kommando anzeigt, immer etwas größer sein wird als das echte Backup.

Wahlweise können Sie noch den Parameter listing mit übergeben, dann wird eine Liste aller zu sichernden Dateien ausgegeben. Abhängig vom FileSet kann diese Liste sehr lang sein und es daher einige Zeit dauern, alle Dateien anzuzeigen. Das estimate-Kommando kann folgendermaßen aufgerufen werden:

estimate job=<job-name> listing client=<client-name> 
       fileset=<fileset-name> level=<level-name>

die Angabe des Jobs ist ausreichend, aber Sie können durch Angabe des Clients, FileSets und/oder des Backup-Levels die entsprechenden Werte überschreiben.

Zum Beispiel können Sie folgendes eingeben:

     @output /tmp/listing
     estimate job=NightlySave listing level=Incremental
     @output

durch das erste Kommando wird die Ausgabe der Console in die Datei /tmp/listing umgeleitet. Dann wird durch das estimate-Kommando eine Liste aller Dateien erstellt, die beim nächsten inkrementellen Backup des Jobs 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 über die Angabe der Dateigröße im Verzeichnis-Eintrag bestimmt wird. Das kann zu großen Abweichungen bei der ermittelten Backup-Größe führen, falls im FileSet sparse-Dateien vorhanden sind. sparse-Dateien finden sich oft auf 64-Bit-Maschinen, wo sie für bestimmte Systemdateien benutzt werden. Die angezeigten Bytes sind die Gesammtgröß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öße für ein FileSet anzuzeigen, bei dem die sparse-Option gesetzt ist.

exit
Das exit-Kommando beendet die Console.

+

gui
Aktiviert den nicht-interaktiven GUI-Modus.
gui [on|off]

help
Das help-Kommando zeigt alle verfügbaren Kommandos mit einer kurzen Beschreibung an.

label
Das label-Kommando wird benutzt um physikalische Volumes zu labeln. Das label-Kommando kann folgendermaßen aufgerufen werden:

label storage=<storage-name> volume=<volume-name> slot=<slot>

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ö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ürfen Buchstaben, Zahlen und folgende Sonderzeichen verwendet werden: Binde- (-) und Unterstrich (_), Doppelpunkt (:) und Punkt (.). Alle anderen Zeichen, einschließlich des Leerzeichens, sind nicht erlaubt. Durch diese Einschrä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 überschreiben, dieser Versuch erzeugt den oben genannten Fehler. Um diesen Fehler zu vermeiden, können Sie mit den folgenden Shell-Kommandos ein EOF am den Anfang des Volumes schreiben:

       mt rewind
       mt weof

Das label-Kommando kann aufgrund verschiedener Gründe fehlschlagen:

  1. Der angegebene Volume-Name existiert schon in der Katalog-Datenbank

  2. Der Storage-Dienst hat schon ein Tape oder anderes Volume in dem benötigten Gerät gemountet. In diesem Fall müssen Sie das Gerät erst mit dem unmount-Kommando freigeben und dann ein leeres Volume zum labeln einlegen.

  3. Das Volume ist bereits gelabelt. Bacula wird niemals ein bestehendes label überschreiben, solange das Volume nicht abgelaufen ist und Sie das relabel-Kommando verwenden.

  4. Es ist kein Volume im Gerät.

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

 [user@host]$  mt -f /dev/st0 rewind
 [user@host]$  mt -f /dev/st0 weof

Ein Festplatten-Volume können Sie auch manuell lö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ür das Volume abläuft, oder kann aber auch mit dem purge-Kommando erzwungen werden. Danach können Sie das relabel-Kommando, wie weiter unten beschrieben, verwenden.

Falls Ihr Autochanger Barcode-Labels unterstützt, können Sie alle Volumes im Autochanger, eins nach dem anderen, mit dem Kommando 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ür das Reinigungsband erstellt.

Als Beispiel, mit dem Eintrag:

        Pool {
          Name ...
          Cleaning Prefix = "CLN"
       }

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

label storage=xxx pool=yyy slots=1-5,10 barcodes

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öglichkeiten sind:
   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

Die meisten der oben genannten Parameter sollten selbsterklärend sein. Üblicherweise werden Sie, falls Sie nicht genügend Parameter angeben, von der Console nach den fehlenden Informationen gefragt.

Das list nextvol-Kommando gibt den Volume-Namen aus, der von dem angegebenen Job beim nächsten Backup benutzt werden wird. Allerdings sollten Sie beachten, dass das tatsächlich benutzte Volume von einer Reihe von Faktoren, wie zum Beispiel von den vorher laufenden Jobs oder der Zeit, wann der Job läuft, abhängen kann. Eventuell wird ein Tape schon voll sein, das aber noch freien Platz hatte, als Sie das Kommando ausführten. Dieses Kommando gibt Ihnen also nur einen Hinweis darauf, welches Tape benutzt werden könnte, aber es kann keine definitive Aussage darüber treffen. Zusätzlich kann dieses Kommando mehrere Seiteneffekte haben, da es den selben Algorithmus durchläuft, wie ein echter Backup-Job. Das bedeutet, dass es dazu führen kann, dass aufgrund dieses Kommandos Volumes automatisch recycled oder gelöscht (purged) werden. Standardmäßig muss der angegebene Job innerhalb der nächsten zwei Tage laufen, ansonsten wird kein Volume für den Job gefunden. Allerdings können Sie durch Angabe des Parameters 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önnen Sie folgendes Kommando benutzen: list nextvol job=MyJob days=3.

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

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

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

+------+---------+---------+---------+----------+-------------+
| PoId | Name    | NumVols | MaxVols | PoolType | LabelFormat |
+------+---------+---------+---------+----------+-------------+
|    1 | Default |       0 |       0 | Backup   | *           |
|    2 | Recycle |       0 |       8 | Backup   | File        |
+------+---------+---------+---------+----------+-------------+

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

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

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

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äge untereinander, mit einem Feld pro Zeile, ausgegeben. Diese Kommando kann eine sehr lange Liste an Ausgaben produzieren.

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

          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

messages
Durch ausführen des messages-Kommandos werden wartende Console-Meldungen sofort angezeigt.

memory
Gibt die momentane Speichernutzung des Director-Dienstes aus.

mount
Das mount-Kommando veranlasst Bacula dazu, ein Volume in einem physikalischen Laufwerk zu lesen. Es ist damit mö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önnen. Normalerweise wird dieses Kommando nur ausgeführt, wenn kein Volume im Laufwerk war und Bacula Sie auffordert ein neues einzulegen, oder wenn Sie das Laufwerk vorher mit dem 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ßen aufgerufen werden

mount  storage=<storage-name> [ slot=<num> ] [
       drive=<num> ]

mount [ jobid=<id> |  job=<job-name> ]

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

python
Das python-Kommando kennt nur den Parameter restart:

   python restart

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 DirStartUp.py neu einzulesen. Für weiterführende Informationen zum Thema python-Scripting lesen Sie bitte das Kapitel PythonScripting.

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

prune files|jobs|volume|stats client=<client-name>
volume=<volume-name>

Um die Katalog-Einträge eines Volumes zu löschen, muss der VolStatus entweder Full, Used oder Append sein, ansonsten werden keine Einträge entfernt.

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

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)

Damit das purge-Kommando Volume-Einträge aus der Katalog-Datenbank entfernen kann, muss der VolStatus entweder Full, Error, Used oder Append sein.

Die Daten auf den Volumes werden durch dieses Kommando nicht verändert.

quit
Das quit-Kommando beendet das Consolen-Programm. Die Console sendet das quit- Kommando an den Director-Dienst und wartet auf seine Bestätigung. Falls der Director mit der Ausührung von anderen Kommandos beschäftigt ist, kann es einen Moment dauern, bis das quit ausgeführt werden kann. In dem Fall können Sie durch Eingabe von .quit die Console sofort beenden.

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önnen Sie aus der Liste der verfügbaren SQL-Anweisungen eine zur Ausführung auswählen.

Die folgenden Anweisungen sind momentan vordefiniert (Version 2.2.7):

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):

relabel
Das relabel-Kommando wird benutzt um ein neues label auf ein bereits gelabeltes physikalisches Volume zu schreiben. Das Kommando wird wie folgt aufgerufen:

relabel storage=<storage-name> oldvolume=<old-volume-name>
    volume=<newvolume-name>

Wenn Sie einen Parameter nicht angeben, wird die Console Sie danach fragen. Damit der alte Volume-Name (das label) überschrieben werden kann, muss der VolStatus entweder Purged oder Recycle sein, was automatisch passiert, wenn die entsprechenden Aufbewahrungszeiträume abgelaufen sind (oder alle Datei- und Job-Einträ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önnen nicht wiederhergestellt werden.

release
Das release-Kommando veranlaßt den Storage-Dienst, dass im angegebenen Gerät befindliche Tape zurückzuspulen und das label beim nächsten Zugriff neu einzulesen.

release storage=<storage-name>

Nach dem release-Kommando ist das Gerät weiterhin von Bacula geöffnet (außer Sie haben ,,Always Open`` in der Storage-Dienst-Konfiguration auf ,,No`` gesetzt), andere Prozeße/Programme können also nicht auf das Gerät zugreifen. Allerdings kö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ät zugreifen wollen, müssen Sie das unmount-Kommando verwenden, nur dann gibt Bacula das Gerät komplett frei.

reload
Das reload-Kommando veranlaßt den Director-Dienst seine Konfigurations-Dateien neu einzulesen und mit der aktuellen Konfiguration weiterzuarbeiten. Die neue Konfiguration wird dabei sofort für alle neuen Jobs gültig. Wenn Sie die Zeitpläne (Schedules) ändern, bedenken Sie bitte, dass Bacula die geplanten Jobs bis zu zwei Stunden im vorraus berechnet und es dadurch zu einer Verzögerung kommen kann, bis die neue Konfiguration gü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ühren während Jobs laufen, wird die neue Konfiguration solange zurückgehalten, bis alle Jobs beendet sind und erst dann wirksam. Sie können bis zu zehn Konfigurationsänderungen durchführen wä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öglich ist, die Director-Konfiguration zur Laufzeit neu zu laden, und auch dann wenn Jobs laufen, sollten Sie bei der nächsten Gelegenheit den Director-Dienst neu starten um Seiteneffekte auszuschließen. Das neue Einlesen der Konfiguration ist ein sehr komplexer Vorgang und nur nach dem Neustart können Sie sicher sein, dass nur noch mit der neuen Konfiguration gearbeitet wird.

restore
Das restore-Kommando erlaubt es Ihnen auf verschiedenen Wegen, einen oder mehrere Jobs (JobIDs) zur Wiederherstellung auszuwählen. Nachdem die JobIDs ausgewählt wurden, erstellt der Director-Dienst aus den dazugehöhrigen Datei-Einträgen einen internen Verzeichnis-Baum in dem Sie dann die Dateien und Verzeichnisse zur Wiederherstellung markieren können. Dieser restore-Modus der Console verhählt sich ähnlich dem Unix-Standard-Kommando restore.

restore storage=<storage-name> client=<backup-client-name>
  where=<path> pool=<pool-name> fileset=<fileset-name>
  restoreclient=<restore-client-name>
  select current all done

Wobei current, falls angegeben, das restore-Kommando dazu veranlaßt, automatisch das aktuellste Backup zur Wiederherstellung auszuwählen. Das Schlüsselwort all wählt automatisch alle Dateien aus. Falls Sie einen benötigten Parameter nicht angeben, wird das restore-Kommando Sie danach fragen. Für weitere Informationen zum restore-Kommando lesen Sie bitte das Restore Kapitel dieses Handbuchs.

Das Schlüsselwort 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 restoreclient können Sie allerdings auch einen anderen Client wählen, auf dem das Backup statt dessen wiederhergestellt werden soll.

run
Das run-Kommando erlaubt es Ihnen, Jobs in den Zeitplan des Director-Dienstes einzufügen, die sofort gestartet werden sollen. Das run-Kommando kann wie folgend aufgerufen werden:

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

Jede benötigte Information, die nicht angegeben wurde, wird zur Auswahl aufgelistet. Bevor der Job in den Zeitplan des Directors eingefügt wird, werden Sie aufgefordert die Parameter zu bestätigen, zu ändern oder den Job abzubrechen. Falls Sie das Schlüsselwort yes angegeben haben, wird der Job ohne Nachfrage in den Zeitplan aufgenommen.

Ein Beispiel:

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):

Nach der Auswahl der Nummer 5 erscheint:

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):

Wenn Sie jetzt yes eingeben, wird der Job gestartet, falls Sie mod auswählen, erscheint diese Liste der veränderbaren Parameter:

Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Client
     6: When
     7: Pool
Select parameter to modify (1-7):

Wenn Sie den Job zum Beispiel erst zu einem späteren Zeitpunkt starten wollen, können Sie ü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 über diese Auswahlliste geändert werden. Er muss beim Starten des run-Kommandos auf der Kommandozeile mit angegeben werden. Wir er nicht gesetzt, übernimmt das run-Kommando die spooldata-Option aus der Job-, Storage- oder Schedule-Konfiguration.

setdebug
Das setdebug-Kommando wird benutzt um den Debug-Level für die verschiedenen Dienste zu setzen (der Debug-Level bestimmt die Menge der ausgegebenen Programm-Informationen, die z.B. zur Fehlersuche verwendet werden können). Es wird wie folgt aufgerufen:

setdebug level=nn [trace=0/1 client=<client-name> | dir | director |
  storage=<storage-name> | all]

Wenn trace=1 gesetzt wird, schreibt der gewählte Dienst alle Ausgaben in eine Datei (,,Dienst-Name``.trace) in seinem konfigurierten Arbeitsverzeichnis. Das ist vor allem bei Windows-Systemen nützlich, da sich dort die Programm-Ausgaben nicht ü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ängt. Diese Datei muss von Hand durch den Benutzer gelöscht werden.

setip
ermöglicht dem Client seine aktuelle IP-Adresse dem Director-Dienst mitzuteilen, falls er dazu autorisiert ist.

show
Das show-Kommando zeigt die Konfiguration des Director-Dienstes an. Diese Kommando wird hauptsächlich zur Fehlersuche durch die Entwickler benutzt. Die folgenden Schlüsselwörter kö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.

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

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

Abhängig von dem von Ihnen verwendeten Datenbank-Systems (MySQL, PostgreSQL oder SQLite) haben Sie mehr oder weniger Möglichkeiten direkte Datenbank-Abfragen durchzuführen. Mehr Informationen finden Sie in der Beschreibung Ihrer Datenbank.

status
Das status-Kommando zeigt den momentanen Status des gewählten Dienstes an (Director, Storage oder eines Clients). Beim Storage-Dienst können Sie sich den Laufwerks-Status oder den Inhalt des Autochangers anzeigen lassen. Der Client zeigt Informationen über aktuell laufende Jobs und deren Geschwindigkeit an. Es kann wie folgt aufgerufen werden:

status [all | dir=<dir-name> | director [days=nnn] |
  client=<client-name> | [slots] storage=<storage-name> ]

Wenn Sie das Kommando status dir ausführen, listet die Console die momentan laufenden Jobs, alle für die nächsten 24 Stunden geplanten Jobs und die letzten 10 beendeten Jobs, sowie deren Status auf. Die Liste der geplanten Jobs enthä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äume der Volumes nicht in Betracht gezogen; 2. das angezeigte Volume ist die nur bestmögliche Schätzung, da das Volume eventuell in der zwischenzeit andersweitig benutzt oder auch durch vorher laufende Jobs vollgeschrieben werden könnte.

In der Liste der laufenden Jobs finden Sie diese Informationen:

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

Wenn Sie sich diese Ausgabe von unten nach oben anschauen, sehen Sie, dass JobId 5343 (Rufus) gerade lä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ät und wartet daher auf die Beendigung der Jobs mit höheren Prioritä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 status dir zeigt standardmäßig nur die für heute und morgen geplanten Jobs an. Falls Sie die geplanten Jobs der nächsten drei Tage sehen möchten um, zum Beispiel am Freitag zu kontrollieren, welche Volumes am Freitag, am Wochenende und am Montag benutzt werden, können Sie die Option days=3 verwenden. days=0 zeigt nur die für heute geplanten Jobs an.

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

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:
====

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

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.
====
...

Der Autochanger ist, durch das 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.

time
Gibt die aktuelle Uhrzeit aus.

trace
Schaltet das Mitschneiden der Dienst-Ausgaben in eine Datei ein oder aus. Siehe setdebug Kommando.

umount
identisch mit unmount (in Anlehnung an das Unix-Kommando umount).

unmount
Das unmount-Kommando veranlasst den Storage-Dienst dazu, dass angegebene Gerät freizugeben. Der Aufruf dieses Kommandos ist identisch mit dem mount-Kommando:
unmount storage=<storage-name> [ drive=<num> ]

unmount [ jobid=<id> | job=<job-name> ]

Nachdem ein Gerät mit dem unmount-Kommando freigegeben wurde, kann Bacula es so lange nicht verwenden, bis es wieder mit dem mount-Kommando geöffnet wird. Falls Bacula das Gerät zwischenzeitlich für einen Job benötigt, wird Bacula in regelmäßigen Abständen den Benutzer informieren, dass Gerät zu mounten.

Wenn das Gerät ein Autochanger ist, wird das angebene Laufwerk zudem entladen. Wenn keine Laufwerk angegeben ist, wird Laufwerk 1 verwendet.

update
Das update-Kommando aktualisiert die Katalog-Datenbank entsprechend der angegebenen Option. Möglich sind Pool- oder Volume-Einträge oder auch die Volumes in den Slots eines Autochangers mit Barcode-Unterstützung. Im Falle der Pool-Einträge werden die aktuellen Information aus den Konfigurations-Dateien des Director-Dienstes gelesen. Die folgenden Schlüsselwörter können angegeben werden:
   media, volume, pool, slots, stats

Falls Sie Volumes aktualisieren, werden Sie nach den zu ändernden Parametern gefragt. Folgende Volume-Parameter können angepasst werden:

 
   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

Bei Auswahl von Pool wird Bacula das gewählte Volume in den angegebenen Pool verschieben.

Bei Auswahl von Volume from Pool, All Volumes from Pool und 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äge: Recycle, RecyclePool, VolRetention, VolUseDuration, MaxVolJobs, MaxVolFiles, und MaxVolBytes. (RecyclePool ist erst ab Version >2.1.4 verfügbar.)

Durch das Kommando update slots holt sich Bacula eine aktuelle Liste der Volume-Barcodes in den Slots des Autochangers. Für jeden gefundenen Barcode wird automatisch der Slot des Volumes in der Katalog-Datenbank angepasst. Das ist nü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ügbar sind.

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

Das update-Kommando kann wie folgt aufgerufen werden:

       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

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ählt. Fall Sie jedoch mehrere Katalog-Einträge in der Konfiguration des Director-Dienstes angegeben haben, können Sie mittels des use-Kommandos von einem Katalog zum anderen wechseln.

use <database-name>

var
Das var-Kommando akzeptiert eine Zeichenkette (auch in Anführungstrichen) und führt Variablen-Ersetzungen durch, wie sie auch mit der LabelFormat Zeichenkette geschehen. Der einzige Unterschied ist, dass beim Ausführen des var-Kommandos kein Job läuft und daher andere Werte verwendet werden anstelle von den Job-spezifischen. Allerdings werden Sie trotzdem einen Eindruck davon erhalten, was für eine Ausgabe zu erwarten ist.

version
Das version-Kommando gibt die Version des Director-Dienstes aus.

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

Spezielle Punkt-Kommandos

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

.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

Spezielle @-Kommandos

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

@input <filename>
Liest und führt die Kommandos aus der angegebenen Datei aus.

@output <filename> w/a
Schreibt die Ausgaben der Console in die angegebene Datei. Entweder wird die Datei überschrieben (Option w) oder es wird an eine bestehende Datei angehängt (Option a). Um die Ausgaben wieder an das Terminal umzuleiten können Sie einfach @output ohne einen Datei-Namen angeben. Passen Sie aber auf, dass Sie nicht versehentlich eine bereits bestehende Datei überschreiben. Hier ein Beispiel um alle Ausgaben zu unterdrücken:

    @output /dev/null
    weitere Kommandos ...
    @output

@tee <filename> w/a
Sendet die Ausgaben an das Terminal und an die angegebene Datei. Zum Beenden führen Sie @tee oder @output ohne Datei-Namen aus.

@sleep <seconds>
Schläft die angegebene Zeit in Sekunden.

@time
zeigt die aktuelle Zeit und das Datum an.

@version
zeigt die Console-Version an

@quit
quit

@exit
quit

@# anything
ein Kommantar

Steuern der Console durch ein Shell-Script

Sie können viele Console-Aufgaben durch Shell-Scripte vereinfachen. Wenn Sie zum Beispiel folgende Kommandos in ein Script schreiben:

 ./bconsole -c ./bconsole.conf <<END_OF_DATA
 unmount storage=DDS-4
 quit
 END_OF_DATA

wird durch seine Ausführung das Gerät DDS-4 freigegeben und im Falle eines Autochangers auch entladen. Sie können solche Scripte auch in der Job-Konfiguration als RunBeforeJob oder RunAfterJob angeben.

Sie können die Console auch die Datei mit den Kommandos einlesen lassen, wenn Sie sie so starten:

./bconsole -c ./bconsole.conf <Dateiname

wobei die Datei Dateiname beliebige und beliebig viele Kommandos enthalten kann.

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

./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

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

grep "^Termination: *Backup OK" /tmp/log1.out
backupstat=$?
grep "^Termination: *Restore OK" /tmp/log2.out
restorestat=$?

Volumes zu einem Pool hinzufügen

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

Die folgenden Informationen müssen Sie vor dem hinzufügen haben:

  1. Den Namen des Pools (normalerweise ,,Default``)
  2. Den Media-Typ wie er in dem Storage-Eintrag der Director-Dienst-Konfiguration angegeben ist (z.B. DLT8000)
  3. Die Anzahl und Namen der Volumes die Sie erstellen möchten

Um die Volumes zu dem Pool hinzuzufügen, können Sie dann beispielweise folgende Kommandos ausführen:

*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
*

Zur Kontrolle können Sie sich dann die neuen Volumes anzeigen lassen:

*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 |
+-------+----------+---------+---------+-------+------------------+
*

Bitte beachten Sie, dass die Console automatisch eine fortlaufende Nummer an den Volume-Namen (Save in diesem Beispiel) anhängt. Wenn Sie diese Nummern nicht angehängt haben möchten, mü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.

Kern Sibbald 2009-08-20