MS Exchange sichern mit Bacula

Bacula kann auch benutzt werden, um einen MS Exchange Server zu sichern. Allerdings spielt auch ntbackup eine Rolle, so dass die klassischen Nachteile dieses Schmalspur-Backupprogramms zu tragen kommen. Damit ein Exchange-Server wirklich ausschließlich mit Bacula gesichert werden kann, müsste Bacula eine Plugin-API anbieten. Ein erster Schritt in diese Richtung könnte schon in der kommenden Version 1.37 getan werden.

Solange ist aber noch eine andere Vorgehensweise erfoderlich...

Achtung: Die vorliegenden Dateien funktionieren nur mit Windows 2000 und Exchange 2000. Im Windows Server 2003 hat Microsoft wohl die Kommandozeilen-Parameter von ntbackup geändert, so dass das angepasst werden müsste. Entsprechende Hinweise gerne an mich.

Übersicht

  • Man startet ntbackup manuell, stellt die gewünschten Parameter ein und sichert diese Job als bks-Datei.
  • Ein RunBeforeJob ruft ntbackup mit einigen Parametern auf, so dass am Ende die Exchange-Daten in einer Datei stehen.
  • Diese Datei wird dann gesichert.

Im Detail

bks-Datei erstellen

TODO

Bacula-Konfiguration

Aus der bacula-dir.conf:

Job {
  Name = "Exchange"
  ...
  FileSet = "Exchange_files"
  Client Run Before Job = "C:\\bacula\\exchange\\exchange.bat %l"
  Client Run After Job = "del /F /Q C:\\bacula\\exchange\\files\\*"
}
FileSet {
  Name = "Exchange_files"
  Include {
        Options {
                compression=GZIP
                signature=MD5
                portable=yes
        }
        File = "C:/bacula/exchange/files"
  }
}

Vermutlich könnte man sogar die GZIP-Kompression weglassen, da ich vermute, dass ntbackup bereits komprimiert.

Den Windows-Filedaemon konfiguriert wie jeden anderen Filedaemon auch, daher gebe ich diese Konfiguration hier nicht an.

Windows-Konfiguration

Ich habe folgende Verzeichnisse angelegt:

C:\
 |
 |- bacula\
     |
     |- exchange\
         |
         |- exchange.bat
         |- exchange.py
         |- files\

Die exchange.bat hat eigentlich nur den Zweck, anschließend das eigentliche Python-Skript aufzurufen, ohne dass man im Bacula director den Windows-Pfad des Python-Interpreters kennen muss... Die eigentliche Arbeit macht exchange.py, womit auf dem Exchange-Server natürlich Python installiert sein muss. Alternativ kann man auch die bat-Datei etwas erweitern (bzw. die auskommentierten Befehle wieder aktivieren), aber diese verkrüppelte Windows-Skriptsprache der CMD.EXE ist nun wirklich nicht schön.

Das Skript kann Exchange komplett oder differentiell sichern, alle anderen Bacula-Level werden auf differentiell abgebildet.

Downloads