Vollbildmodus: Seiteninhalt ohne Menus

Backup mit Bacula

Bacula ist ein Netzwerkbackupsystem mit Client/Server-Architektur das Daten in einem heterogenen Netzwerk sichert.

Bacula unterstützt Linux-, Unix- und Windows-Backup-Clients, und eine Reihe von professionellen Backup-Geräte einschließlich Tape-Libraries. Administratoren und Betreiber können das System über eine Konsole, grafische Benutzeroberfläche oder Web-Schnittstelle konfigurieren. Als Backend werden MySQL, PostgreSQL oder SQLite für die Speicherung von Informationen verwendet.

Quelle: Wikipedia.

Versionen, Entwicklung und Forks

  • Bacula Community-Version: 3.0.0 (28.12.2008) → 5.0.0 (22.01.2010) bis 5.2.13: (20.02.2013) → 7.0.0 (29.03.2014) → 9.0.0 (7.7.2017) → bis dato. Aktivität
  • Bacula Enterprise Edition (Firma: Bacula Systems, Lizenz: )
  • Bareos (Firma: Bareos GmbH & Co. KG; Lizenz: AGPL v3): Bugfixes und Sicherheitsupdates werden vorrangig für Subscription-Kunden bereitgestellt. Fork von Bacula 5.2.13, Versionsübersicht, Aktivität

Bareos wurde (etwa 2010) von Bacula abgespalten, vorrangig aus der Unzufriedenheit heraus das neue Features nur in der Enterprise-Edition gelandet sind die nicht unter freier Lizenz steht. Aktuellere Windows-Clients werden z.B. nur gegen Bezahlung angeboten, bei Sourceforge ist maximal 5.2.10 erhältlich). Zudem sollte die Konfiguration einfacher und mit sinnvollen Standards versehen werden und ein intuitivere Bedienung (Weboberfläche) geschaffen werden.

Links

Vorträge

Dienstleister

in Deutschland:

Komponenten und Begriffe

Bacula Schaubild

  • Catalogue (SQL-DB): Katalog der gesicherten Dateien und sonstige Daten, unterstützt werden: MySQL (bacula-director-mysql), PostgreSQL (bacula-director-pgsql) und SQLite (bacula-director-sqlite / bacula-director-sqlite3 )
  • Director (bacula-dir): Koordination der Komponenten, Steuerung, archiviert Daten im Katalog
  • Storage (bacula-sd): stellt Sicherungsplatz zur Verfügung, verwaltet Datenträger
  • File-daemon (bacula-fd): führt Sicherungs- und Rücksicherungaufträge aus. Gibts für Windows, Linux, MacOS, BSDs, … Unter Windows werden offene Dateien von dem Volume-shadow-copy-service gesichert.
  • Console: bacula-console,bacula-console-gnome, bacula-console-qt oder bacula-console-wx

Director und Catalog gibts einmal, die anderen Komponenten lassen sich beliebig (oft) verteilen.

  • Jobs: Ein Backup-Auftrag enthält/verweist auf:
    • 1 Client
    • 1 FileSet
    • einen Zeitplan (Schedule)
    • in einem Pool von Datenträgern.
  • FileSets: definiert welche Dateien gesichert werden.
  • Pools:
  • Schedules (Zeitpläne)

Siehe auch: Bacula Konfiguration

Features

  • Acurate Backups (gelöschte Dateien werden beim Restore nicht wiederhergestellt):
  • Verschlüsselung der Daten (Bareos, …)
  • Hardware-Verschlüsselung von LTO4+ Laufwerken nutzbar, Modus AES256-GCM (nur Bareos; lädt Schlüssel in das Bandlaufwerk)
  • Netzwerk Bandbreiten Begrenzung (…)
  • Dateien über x Größe ausnehmen (Bareos)
  • Jobs mit exakt gleichen Parametern nochmal ausgeführt (rerun/rerun since): Bareos
  • All-Drives-Feature (Bareos): in Bacula müssen alle Dateisystem/Laufwerk explizit angegeben werden, neue Dateisystem oder Laufwerkbuchstaben müssen explizit angegeben werden, das feature in Bareos nimmt dies automatisch vor
  • Alle Komponenten auf auf Windows (nur Bareos, Bacula nur FD): Director, storage-daemon und low-level-tool bextract (benötigt für sehr alte Windows-Dateien wo die Windows-ACLs intakt bleiben sollen)
  • Windows EFS filesystems (Bareos ab 13.4.x)
  • mehrere Jobs-IDs mit bconsole abbrechen (Bareos ab 13.2.x)
  • passive-Client (Bareos ab 13.1.x) - Firewallproblematik siehe unten
  • Unterstützung des dedup-Dateisystems von Server 2012 (Bareos)
  • storage-daemon plugins (Bareos), Beispiel (de)Kompression auf dem SD
  • Bandbreitenlimitierung (Bacula 7.2.0, Bareos)
  • Rados (Ceph) Storage plugin (Bareos) How to get good speed with Rados (Ceph) storage daemon

Backup

Arten

  • vollständig (Vollbackup): alle Daten
  • differenziell: geänderte Daten seite letztem Vollbackup
  • inkrementell: geänderte Daten seit letzter Sicherung. Falls das letzte Vollbackup fehlt wird automatisch ein Vollbackup durchgeführt

Vorgehensweise

labeling

Wenn ein Job den Status „is waiting for an appendable Volume“ anzeigt, muss auf der Console der Befehl „label“ eingeben werden. Bacula schickt auch eine eMail mit dem Betreff “ Bacula: Intervention needed for …“. Die Backup-Datei bekommt den Namen des Labels.

Anbindung von Internethosts

Eine Anbindung von Backupquellen (mit installiertem bacula-fd) im Internet ist mit Bacula möglich. Vorrausssetzung ist, das die Backupquellen den Storage-daemon (bacula-sd) erreichen können (in der Konfiguration Address und SDPort). Falls dieser im internen LAN steht und nur einen intern erreichbaren DNS-Hostnamen hat, muss dieser mit hosts-Datei umgebogen werden und eine Freigabe in der Firewall eingerichtet werden. Zu beachten ist, dass z. B. der Download beim Vollbackup sehr lange dauern kann und auch ein Restore durch einen kleine Uploadgeschwindigkeit sehr lange dauern kann. Zusätzlich sollte die Firewall-regeln (Verbindung von file-daemon zum storage-daemon) auch die IP enthalten damit der Dienst nicht für das ganze Internet erreichbar ist.

Bareos hat den Modus „passive Client“, der eine eingehende Verbindung vom file-daemon zum storage daemon (+DNS-Kenntnis wie man ihn erreicht) unnötig macht.

Restore

Es stehen aktuell 11 verschiedene Möglichkeiten von Verfügung:

  1. letzter gesicherter Stand
  2. Auswahl durch SQL-Kommando

Tools

Das folgende Skript löscht alle wartenden Jobs:

#!/bin/bash
jobIds=`echo 'status dir running' | bconsole | fgrep 'is waiting' | awk '{print $1}'`
for i in $jobIds
do
    if [ -z `echo "$i" | grep '^[0-9]\+$'` ]
    then
        echo "Error: job ID $i is not a number!"
    else
        echo "Killing waiting Bacula job $i"
        echo "cancel jobid=$i" | bconsole
    fi
done

Quelle: https://www.cyberwizzard.nl/gentoo-linux/144-kill-all-waiting-backup-jobs-in-bacula.html

baculum Webconsole

FIXME

Console bacula-console

Wenn die bacula-console richtig konfiguriert ist kommt bei der Verbindung folgende Meldung:

Connecting to Director MY-BACULA:9101
1000 OK: bacula-dir Version: 1.38.11 (28 June 2006)

Die möglichen Kommandos bekommt man nach Eingabe von „help“:

Command    Description
  =======    ===========
  add        add media to a pool
  autodisplay autodisplay [on|off] -- console messages
  automount  automount [on|off] -- after label
  cancel     cancel [

bacula-console-qt

Die grafische Konsole aus dem Ubuntu-Paket (bacula-console-qt) ist sehr zähflüssig in der Bedienung. Starten kann man sie mit dem Aufruf von bat, es muss im Aufrufverzeichnis eine Konfigurationsdatei unter dem Namen bat.conf existieren, diese kann man von der bconsole (/etc/bacula/bconsole.conf) nehmen.

Bacula und Nagios

FIXME

BReport

Traymonitor

Der Traymonitor wird als „Restricted Director“ konfiguriert. Dazu vergibt man ein eigenes Passwort.

Konfiguration

Achtung: Falls die Standard-ports (TCP 5901 bis 5903) geändert werden, solltes dieses in der /etc/services auch eingetragen werden! Ansonsten finden die Init-scripte das PID-file (dort steht die aktuelle Prozess-ID drin) nicht und man wundert sich warum Konfigurationsänderungen nicht übernommen werden. Grund ist das die Prozess gar nicht gefunden werden und somit auch nicht neu starten, deshalb werden Konfigurationsänderungen auch nicht übernommen.

Bacula Konfigurationsdiagramm

Director: bacula-dir.conf

  • Sektionen:
    • Director
      • Port 9101
      • Password: Passwort für die Console
    • JobDefs (Defini

File-Daemon bacula-fd.conf

  1. Name (Name) anpassen
  2. IP-Adresse (FDAddress) zum lauschen angeben
  3. Restricted Director für traymonitor konfigurieren

systemd-service

  • Bacula-fd systemd.service /etc/systemd/system/bacula-fd.service
  • systemctl daemon-reload
  • systemctl enable bacula-fd.service
# Systemd Bacula service file
#
# Copyright (C) 2000-2016 Kern Sibbald
# License: BSD 2-Clause; see file LICENSE-FOSS
#
# /lib/systemd/system/bacula-fd.service
#
# Description:
#    Used to start the bacula file daemon service (bacula-fd)
#
#    enable : systemctl enable bacula-fd
#    start : systemctl start bacula-fd
#
#

# from http://www.freedesktop.org/software/systemd/man/systemd.unit.html
[Unit]
Description=Bacula File Daemon service
Requires=network.target
After=network.target
RequiresMountsFor=/var/lib/bacula /etc/bacula /usr/sbin /run/bacula

# from http://www.freedesktop.org/software/systemd/man/systemd.service.html
[Service]
Type=simple
User=root
Group=root
Environment="CONFIG=/etc/bacula/bacula-fd.conf"
EnvironmentFile=-/etc/default/bacula-fd
ExecStartPre=/usr/sbin/bacula-fd -t -c $CONFIG
ExecStart=/usr/sbin/bacula-fd -f -c $CONFIG
ExecReload=/bin/kill -HUP $MAINPID
SuccessExitStatus=15
StandardError=syslog

[Install]
WantedBy=multi-user.target

Storage-Daemon bacula-sd.conf

  1. Name (Name) anpassen
  2. IP-Adresse (SDAddress) zum lauschen angeben
  3. Restricted Director für traymonitor konfigurieren
  4. Storage für die Dateiablage konfigurieren.
    1. Name und Mediatype müssen in bacula-dir.conf übereinstimmen
    2. Standardmäßig ist hier die Dateiablage unter /tmp angegeben.

Console

  1. Öffnen /etc/bacula/bconsole.conf
  2. Hostname (address) des directors eintragen
  3. Password (password) des directors eintragen

Jobs vor/nach Backup auf Zielhost ausführen

Dies geht über Client Run Before/After Jobs.

verschlüsselte Kommunikation

In der Standardeinstellung wird anhand des Passwort-hashes (per CRAM-MD5) überprüft ob eine Kommunikation erlaubt wird. Ansonsten wird die Kommunikation unverschlüsselt geführt.

Ab Bacula version 2.5.x ist SSL/TLS-Verschlüsselung möglich:

Nur Authentifizierung der Partner (keine Verschlüsselung der Nutzdaten!):

TLS Authenticate = yes 

Vollständige Verschlüsselung (Authentifizierung + Nutzdaten), siehe auch: Bacula TLS - Communications Encryption

TLS Enable = yes
TLS Require = yes    # enforce encrypted communication
Verify Peer = yes

Die Kommunikationspartner werden überprüft (Einstellung nur auf im Server-kontext möglich, also beim dir FIXME). Wenn nicht per TLS Allowed CN bestimmte Common-Names eingeschränkt sind, dann werden alle gültigen Zertifikate der im System bekannten Root-CAs akzeptiert.

TLS Allowed CN = 

Schränkt auf bestimmte Common-Names ein, die Direktive kann mehrfach angegeben werden.

TLS CA Certificate File = /etc/bacula/ca.pem   # This is a server certificate, used for incoming console connections
TLS Certificate = /etc/bacula/host.crt.pem     # public Certificate
TLS Key = /etc/bacula/host.key.pem          # private key

Konfigurations Beispiele Bacula

File-daemon

Vorgehensweise

  1. bacula-fd.conf anlegen
  2. Passwort / IP / Name ändern
  3. die fd-Konfiguration anpassen
    1. In Client-Sektion die Daten aus der eben angelegten „bacula-fd.conf“ kopieren
    2. JobDefs
    3. Job
    4. Fileset

Windows

Der file-Daemon (Bezeichnung als „Client“ auf Windows).

# Default  Bacula File Daemon Configuration file
#
#  For Bacula release 2.4.3 (10/10/08) -- Windows MVS
#
# There is not much to change here except perhaps the
# File daemon Name
#

#
# "Global" File daemon configuration specifications
#
FileDaemon {                            # this is me
  Name = comp2000server-fd
  FDport = 9102                # where we listen for the director
  WorkingDirectory = "C:/Dokumente und Einstellungen/All Users/Anwendungsdaten/Bacula/Work"
  Pid Directory = "C:/Dokumente und Einstellungen/All Users/Anwendungsdaten/Bacula/Work"
  Maximum Concurrent Jobs = 2
}

#
# List Directors who are permitted to contact this File daemon
#
Director {
  Name = bacula-dir
  Password = "Passwort_ändern!"
}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = bacula-mon
  Password = "Passwort_ändern!"
  Monitor = yes
}

# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}

Linux

#
# Default  Bacula File Daemon Configuration file
#
#  For Bacula release 1.38.11 (28 June 2006) -- debian 4.0
#
# There is not much to change here except perhaps the
# File daemon Name to
#

#
# List Directors who are permitted to contact this File daemon
#
Director {
  Name = bacula-dir
  Password = "Passwort_ändern!"
}

#
# Restricted Director, used by tray-monitor to get the
#   status of the file daemon
#
Director {
  Name = bacula-mon
  Password = "Passwort_ändern!"
  Monitor = yes
}

#
# "Global" File daemon configuration specifications
#
FileDaemon {                          # this is me
  Name = bacula-fd
  FDport = 9102                  # where we listen for the director
  WorkingDirectory = /var/lib/bacula
  Pid Directory = /var/run/bacula
  Maximum Concurrent Jobs = 20
  FDAddress = 127.0.0.1 # change!
}

# Send all messages except skipped files back to Director
Messages {
  Name = Standard
  director = bacula-dir = all, !skipped, !restored
}

Console

#
# Bacula User Agent (or Console) Configuration File
#

Director {
  Name = bacula.pi4-director
  DIRport = 9101
  address = bacula.pi4
  Password = "Passwort_ändern!"
}

Problembehebung

Fatal error: Unable to authenticate with File daemon at "ADDRESSE:PORT"

Gründe

  1. Name des Directors ist in der Konfiguration des directors und des file-daemons unterschiedlich
  2. Passwort des file-daemons ist in der Konfiguration des directors und des file-daemons unterschiedlich
  3. nach Portänderungen wurde die Konfiguration nicht korrekt übernommen (veränderte Port in /etc/services eintragen)
  4. „Maximum Concurrent Jobs“ wurde auf dem file-daemons überschritten und er lehnt zusätzliche Verbindungen ab
  5. hosts.allow or hosts.deny verbieten eine Kommunikation zwischen den Rechnern
  6. es existiert kein Reverse-lookup für die Adresse
  7. diverse Netzwerkprobleme
    1. funktioniert DNS?
    2. Ist der fd wirklich auf dem Zielrechner auf dem angegebenem Port (überprüfen mit lsof -i)
    3. Blockiert eine zwischengeschaltete Firewall die Kommunikation?
    4. Routing-probleme

siehe auch: I'm Getting Authorization Errors. What is Going On? (Bacula-FAQ)

wartende Jobs canceln

Per Shellskript die wartenden Jobs abbrechen:

#!/bin/bash
jobIds=`echo 'status dir running' | bconsole | fgrep 'is waiting' | awk '{print $1}'`
for i in $jobIds
do
    if [ -z `echo "$i" | grep '^[0-9]\+$'` ]
    then
        echo "Error: job ID $i is not a number!"
    else
        echo "Killing waiting Bacula job $i"
        echo "cancel jobid=$i" | bconsole
    fi
done

Alternativ: Max Wait Time

Quelle: Kill all waiting backup jobs in Bacula

Fatal error: File daemon at "x.x.x.x:9102" rejected Hello command

Diese Fehlermeldung entsteht wenn die Komponenten von Bacula von der Versionsnummer her inkompatibel sind. Z.B. dann wenn der Director eine ältere Versionsnummer als der File-daemon hat. Wenn man den FD auf die gleiche Versionsnummer wie den Director bringt ist man auf der sicheren Seite. Wenn der file-daemon eine ältere Versionnummer als der Director hat sollte es trotzdem funktionieren. Siehe auch Kapitel DB-Upgrade.

Bacula DB-Upgrade bei MySQL

Während der großen Versionssprünge kommt es zu Änderungen im Datenbank-layout. Die Tabelle Version zeigt die aktuelle Version des Layouts.

Die folgenden SQL-Befehle befinden sich u.a. im bacula-director-mysql-Paket von Debian wenn es entpackt wurde in der data.tar.gz im Verzeichnis /usr/share/dbconfig-common/data/bacula-director-mysql/upgrade/mysql bei anderen DB-Versionen analog.

DB-Upgrade auf Bacula 3.x , mir ist nicht bekannt welche minimale Version nötig ist, es funktioniert von Version 10 (z. B. Bacula 2.4.4) auf 11:

-- Fix bad index on Media table
DROP INDEX inx8 ON Media;
CREATE UNIQUE INDEX inx8 ON Media (VolumeName(128));
ALTER TABLE File CHANGE FileId FileId BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE BaseFiles CHANGE FileId FileId BIGINT UNSIGNED NOT NULL;
ALTER TABLE Job ADD ReadBytes BIGINT UNSIGNED DEFAULT 0 AFTER JobBytes; 
ALTER TABLE Media ADD ActionOnPurge TINYINT DEFAULT 0 AFTER Recycle;
ALTER TABLE Pool ADD ActionOnPurge TINYINT DEFAULT 0 AFTER Recycle;

DELETE FROM Version;
INSERT INTO Version (VersionId) VALUES (11);

-- If you have already this table, you can remove it with:
-- DROP TABLE JobHistory;

-- Create a table like Job for long term statistics
CREATE TABLE JobHisto (
   JobId INTEGER UNSIGNED NOT NULL,
   Job TINYBLOB NOT NULL,
   Name TINYBLOB NOT NULL,
   Type BINARY(1) NOT NULL,
   Level BINARY(1) NOT NULL,
   ClientId INTEGER DEFAULT 0,
   JobStatus BINARY(1) NOT NULL,
   SchedTime DATETIME DEFAULT 0,
   StartTime DATETIME DEFAULT 0,
   EndTime DATETIME DEFAULT 0,
   RealEndTime DATETIME DEFAULT 0,
   JobTDate BIGINT UNSIGNED DEFAULT 0,
   VolSessionId INTEGER UNSIGNED DEFAULT 0,
   VolSessionTime INTEGER UNSIGNED DEFAULT 0,
   JobFiles INTEGER UNSIGNED DEFAULT 0,
   JobBytes BIGINT UNSIGNED DEFAULT 0,
   ReadBytes BIGINT UNSIGNED DEFAULT 0,
   JobErrors INTEGER UNSIGNED DEFAULT 0,
   JobMissingFiles INTEGER UNSIGNED DEFAULT 0,
   PoolId INTEGER UNSIGNED DEFAULT 0,
   FileSetId INTEGER UNSIGNED DEFAULT 0,
   PriorJobId INTEGER UNSIGNED DEFAULT 0,
   PurgedFiles TINYINT DEFAULT 0,
   HasBase TINYINT DEFAULT 0,
   INDEX (StartTime)
   );

DB-Upgrade von Bacula 3.x auf 5.0 (Version 11 auf 12):

ALTER TABLE JobMedia DROP Copy ;
ALTER TABLE Job ADD COLUMN HasCache tinyint default 0 after HasBase;
ALTER TABLE Job ADD COLUMN Reviewed tinyint default 0 after HasCache;
ALTER TABLE Job ADD COLUMN Comment BLOB AFTER Reviewed;
ALTER TABLE JobHisto ADD COLUMN HasCache tinyint default 0 after HasBase;
ALTER TABLE JobHisto ADD COLUMN Reviewed tinyint default 0 after HasCache;
ALTER TABLE JobHisto ADD COLUMN Comment BLOB AFTER Reviewed;

ALTER TABLE Status ADD COLUMN Severity int;
UPDATE Status SET Severity = 15;
UPDATE Status SET Severity = 100 where JobStatus = 'f';
UPDATE Status SET Severity = 90 where JobStatus = 'A';
UPDATE Status SET Severity = 10 where JobStatus = 'T';
UPDATE Status SET Severity = 20 where JobStatus = 'e';
UPDATE Status SET Severity = 25 where JobStatus = 'E';

CREATE TABLE PathHierarchy
(
     PathId integer NOT NULL,
     PPathId integer NOT NULL,
     CONSTRAINT pathhierarchy_pkey PRIMARY KEY (PathId)
);

CREATE INDEX pathhierarchy_ppathid 
          ON PathHierarchy (PPathId);

CREATE TABLE PathVisibility
(
      PathId integer NOT NULL,
      JobId integer NOT NULL,
      Size int8 DEFAULT 0,
      Files int4 DEFAULT 0,
      CONSTRAINT pathvisibility_pkey PRIMARY KEY (JobId, PathId)
);
CREATE INDEX pathvisibility_jobid
             ON PathVisibility (JobId);

CREATE INDEX basefiles_jobid_idx ON BaseFiles ( JobId );

DELETE FROM Version;
INSERT INTO Version (VersionId) VALUES (12);

DB-Upgrade von Bacula 5.0 auf 5.2:

CREATE TABLE RestoreObject (
   RestoreObjectId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
   ObjectName BLOB NOT NULL,
   RestoreObject LONGBLOB NOT NULL,
   PluginName TINYBLOB NOT NULL,
   ObjectLength INTEGER DEFAULT 0,
   ObjectFullLength INTEGER DEFAULT 0,
   ObjectIndex INTEGER DEFAULT 0,
   ObjectType INTEGER DEFAULT 0,
   FileIndex INTEGER UNSIGNED DEFAULT 0,
   JobId INTEGER UNSIGNED NOT NULL REFERENCES Job,
   ObjectCompression INTEGER DEFAULT 0,
   PRIMARY KEY(RestoreObjectId),
   INDEX (JobId)
);

CREATE INDEX jobhisto_jobid_idx ON JobHisto (JobId);

ALTER TABLE File ADD COLUMN DeltaSeq smallint default 0;

DELETE FROM Version;
INSERT INTO Version (VersionId) VALUES (14);

DB-Upgrade von Bacula 5.2 auf 7.2.0 : (Version auf 15)

INSERT INTO Status (JobStatus,JobStatusLong,Severity) VALUES
   ('I', 'Incomplete Job',25);
ALTER TABLE Media ADD COLUMN VolABytes BIGINT UNSIGNED DEFAULT 0;
ALTER TABLE Media ADD COLUMN VolAPadding BIGINT UNSIGNED DEFAULT 0;
ALTER TABLE Media ADD COLUMN VolHoleBytes BIGINT UNSIGNED DEFAULT 0;
ALTER TABLE Media ADD COLUMN VolHoles INTEGER UNSIGNED DEFAULT 0;
ALTER TABLE Media CHANGE VolWrites VolWrites BIGINT UNSIGNED;

CREATE TABLE Snapshot (
  SnapshotId	  INTEGER UNSIGNED AUTO_INCREMENT,
  Name		  TINYBLOB NOT NULL,
  JobId 	  INTEGER UNSIGNED DEFAULT 0,
  FileSetId	  INTEGER UNSIGNED DEFAULT 0,
  CreateTDate	  BIGINT   NOT NULL,
  CreateDate	  DATETIME NOT NULL,
  ClientId	  INTEGER UNSIGNED DEFAULT 0,
  Volume	  TINYBLOB NOT NULL,
  Device	  TINYBLOB NOT NULL,
  Type		  TINYBLOB NOT NULL,
  Retention	  INTEGER DEFAULT 0,
  Comment	  BLOB,
  primary key (SnapshotId)
);

CREATE UNIQUE INDEX snapshot_idx ON Snapshot (Device(255), Volume(255), Name(255));

CREATE INDEX jobtdate_idx on JobHisto (JobTDate);

UPDATE Version SET VersionId=15;
 
software/bacula.txt · Zuletzt geändert: 2018/02/21 01:02 von st
 
Backlinks: [[software:bacula]]