Konfiguration

Die Konfigurationsdaten für FullBackup und IncrementalBackup sind in zwei separaten XML-Dateien abgelegt: FullBackup.conf und IncrementalBackup.conf. Die beiden Konfigurationsdateien sind sehr ähnlich aufgebaut. Falls ein Parameter nicht für beide Dateien gültig ist, wird dies in der folgenden Beschreibung klar hervorgehoben.

Targets

<Targets>

    <Target Path="I:\" FreeGB="1" />

    <Target Path=" VolumePrefix[Weekly]\Sicherung" />

    <Target>

        <Switch Path="J:\" FreeGB="5" />

        <Switch Path="K:\" FreeGB="5" />

    </Target>

</Targets>

Definiert die Ziellaufwerke für die Sicherung.

Path

Definiert Zielordner/Laufwerk. Ist der Laufwerksbuchstabe unbekannt, so kann auch "VolumePrefix[name]" verwendet werden. In diesem Fall wird nach dem ersten Laufwerk gesucht, dessen Name mit "name" beginnt. Hiermit können z.B. externe Festplatten angesprochen werden, deren zugewiesener Laufwerksbuchstabe bei Konfiguration des Backups noch nicht bekannt ist. Eine sinnvolle Bezeichnung für die Laufwerke wäre z.B. "Weekly1", "Weekly2" usw. "VolumePrefix[Weekly]" spricht dann die jeweils angeschlossene Platte an.

HINWEIS: Zielordner werden nicht automatisch angelegt. Sie müssen bereits vor dem Start des Backups auf den dazugehörigen Ziellaufwerken vorhanden sein.

FreeGB

Der Sicherungsjob hält auf den Ziellaufwerken die hier angegebene Menge an Speicherplatz frei. Wird der Wert unterschritten, so werden automatisch alte Sicherungen gelöscht, um Platz zu schaffen. Default: FreeGB="1".

Optional

Durch Angabe von Optional="yes" wird ein optionales Target definiert. Bei optionalen Targets wird geprüft, ob diese verfügbar sind. Das ist insbesondere für externe Laufwerke wichtig. Beim Start des Backups werden alle optionalen Targets geprüft, und fehlende Targets werden per E-Mail und Warning-Log gemeldet. Unmittelbar bevor auf ein optionales Target kopiert wird, findet diese Prüfung erneut statt. Falls dabei ein Target fehlt, wird dieses Ereignis protokolliert. Der Backup-Vorgang wird fortgesetzt. Das erste definierte Target darf nicht optional sein. Default: Optional="no".

Switch

Ein "target" Node kann auch ohne Attribute, dafür aber mit "switch" Child Nodes angegeben werden. Die "switch" Nodes können dann wiederum die selben Attribute haben wie ein einzelnes "target" Attribut. Beim Schreiben in diese "switch" Ziele wird dasjenige verwendet, das am längsten nicht mehr Ziel eines Backups war. Um den tatsächlichen Zielpfad auszuwählen, werden die Namen der "Datumsordner" in möglichen Zielpfaden ausgewertet. Datums- und Zeitangaben im Dateisystem sind in dieser Hinsicht nicht relevant.

Sources

<Sources>

    <Source Path="D:\BenutzerDaten" Name="DATA"/>

    <Source Path="F:\" Name="DriveF" />

</Sources>

Es können beliebig viele Quellen für das Backup angegeben werden.

Path

Spezifiziert die Ordner oder Freigaben, die gesichert werden sollen.

Name

Im DateFolder des Ziellaufwerks wird ein Verzeichnis mit diesem Namen angelegt. Die mittels "Path" spezifizierten Ordner oder Freigaben werden anschliessend in diesem Verzeichnis archiviert.

LogFiles

<LogFiles Path="f:\" />

Path

In diesem Pfad werden zwei LogFiles gespeichert: [DATUM]_progress.log und [DATUM]_warning.log. Das Datum wird im Format "JJMMTT" eingesetzt, so dass sich bei alphabetischer Sortierung eine fortlaufende Anordnung ergibt. Im Progress-Log wird der Fortschritt der Sicherung abgelegt. Es werden Infos zu Quellen und Ziellaufwerken geschrieben und alle kopierten Dateien aufgelistet. Am Ende jeder Quelle wird ein Block mit statistischen Informationen eingefügt. Im Warning-Log werden alle nicht kopierbaren Dateien aufgelistet.

Der Inhalt des Warning-Logs und statistische Infos werden an die unter SmtpMail definierte E-Mail-Adresse gesendet. Fehlermeldungen, z.B. bei Abbrüchen des Backups, gehen ins Event-Log und, soweit möglich, auch an die SmtpMail.

HINWEIS: Der Ordner für die LogFiles wird nicht automatisch angelegt. Er muss bereits vor dem Start des Backups auf dem dazugehörigen Laufwerk vorhanden sein.

ArchiveBit

<ArchiveBit Ignore="yes" Reset="no" />

Definiert den Umgang mit dem ArchiveBit der Quell-Dateien.

Ignore (nur IncrementalBackup)

Wird Ignore="yes" gewählt, so kopiert IncrementalBackup alle Dateien. Bei Ignore="no" werden nur Dateien kopiert, deren Archiv-Bit gesetzt ist. FullBackup kopiert immer alle Dateien. (Nur bei IncrementalBackup.)

Reset

Bei Reset="yes" wird nach dem erfolgreichen Kopieren das Archiv-Bit der Quelldatei zurückgesetzt. Bei Reset="no" bleibt der alte Zustand erhalten.

DayOffset

<DayOffset Hours="8" />

Hours

Definiert die zeitliche Zuordnung eines Sicherungslaufs zu einem Tag. Die angegebene Stundenzahl wird zur Ermittlung des Datums der Sicherung von der aktuellen Zeit abgezogen. Bei der Einstellung Hours="8" wird ein Backup, welches vor 8 Uhr gestartet wird, noch in ein Verzeichnis mit Datum des Vortages geschrieben. Auch das Logfile wird unter dem korrigierten Datum angelegt. Das zum Beginn des Laufes ermittelte Datum gilt für den gesamten Lauf.

Security

<Security Copy="yes" />

Copy

Definiert die Behandlung der Sicherheitseinstellungen auf dem Target. Bei Copy="yes" werden die Sicherheitseinstellungen (Zugriffsrechte) der kopierten Dateien mitkopiert. Beachten Sie:

Priority

<Priority Value="Normal" />

Value

Definiert die Priorität des Sicherungstasks. Value gibt die Task-Priorität an: Normal, Low, Lowest.

Sleep

<Sleep Milliseconds="0" />

Milliseconds

Definiert die Wartezeit nach dem Kopieren einer Datei. Nach jeder kopierten Datei "schläft" der Prozess für die angegebene Anzahl von Millisekunden.

ExistingDateFolder (nur FullBackup)

<ExistingDateFolder DeleteBySource="no" ReuseSwitchTarget="yes" />

Definiert das Verhalten der Software, falls zu kopierende/anzulegende Ordner bereits auf dem Target existieren. (Nur bei FullBackup.)

DeleteBySource

DeleteBySource="no": Wenn im Target bereits ein Verzeichnis für das heutige Datum existiert, wird dessen Inhalt komplett gelöscht.

DeleteBySource="yes": Wenn Im Target bereits ein Verzeichnis für das heutige Datum und die aktuelle Source (definiert in <Source Name=…>) existiert, wird nur dieses Source-Verzeichnis gelöscht.

Mit dieser Funktion kann man nacheinander verschiedene Sourcen in ein gemeinsames Zielverzeichnis schreiben, ohne daß sich die Vorgänge gegenseitig beeinflussen.

ReuseSwitchTarget

ReuseSwitchTarget="no": Die Switch-Logik arbeitet streng nach Datum des letzten Backups: Wenn man das Backup zweimal hintereinander startet, hat man anschließend auf zwei Switch-Zielen ein Verzeichnis mit dem heutigen Datum. 

ReuseSwitchTarget="yes": Wenn auf einem der Switch-Ziele bereits ein Verzeichnis mit dem heutigen Datum existiert, wird dieses wieder herangezogen.

DatabaseLogging (optional)

Microsoft SQL Server

<DatabaseLogging>

    <Type Name="MSSql" />

    <Connection Name="server=(local);uid=sa;pwd=geheim;database=backuplog;" />

    <Table Name="backuplog" />

</DatabaseLogging>

Jet (Access)

<DatabaseLogging>

    <Type Name="Jet" />

    <Connection Name="Provider=Microsoft.Jet.OLEDB.4.0;data source=C:\Backup\Jet\backuplog.mdb" />

    <Table Name="backuplog" />

</DatabaseLogging>

Definiert eine Datenbank. Das Log wird zusätzlich in diese Datenbank geschrieben.

Type Name 

Typ der verwendeten Datenbank. Erlaubt sind: MSSql, Odbc, OleDb und Jet.

Connection Name

Connectionstring zur Datenbank. Beispiel-Syntax abhängig vom verwendeten Datenbank-Typ.

Table Name

Tabelle innerhalb der Datenbank.

HINWEIS: Diese Parameter sind optional. Falls Sie keine Datenbank besitzen oder die Logs nicht in eine Datenbank schreiben wollen, löschen Sie alle dazugehörigen Einträge aus der Konfigurationsdatei.

SmtpMail (optional)

<SmtpMail>

    <Server Name="smtp.provider.de" />

    <To Name="bdmin@firma.de" />

    <From Name="backupserver@firma.de" />

</SmtpMail>

Definiert den SMTP Server und Adressen für den E-Mail-Statusbericht.

Server Name

Adresse des SMTP Servers.

To Name

Empfänger der E-Mail.

From Name

Absender der E-Mail (viele SMTP-Server verlangen eine existierende E-Mail-Adresse für den Absender).

HINWEIS: Diese Parameter sind optional. Falls Sie keinen SMTP-Server besitzen oder die Statusbereichte nicht per E-Mail verschicken wollen, löschen Sie alle dazugehörigen Einträge aus der Konfigurationsdatei.

Konfigurationsbeispiele

Um das Konzept und die Anwendung der einzelnen Optionen etwas klarer zu machen, folgt hier unsere eigene Konfiguration mit den Überlegungen, die dahinter stecken. Der Übersichtlichkeit halber haben wir Kommentare in Kursivschrift in die XML-Datei geschrieben.

Fullbackup.conf

<?xml version="1.0" encoding="utf-8"?>

<Configuration>

    <Targets>

        <Target>

            <Switch Path="g:\" FreeGB="1" />

            <Switch Path="h:\" FreeGB="1" />

        </Target>

        <Target Path="VolumePrefix[WeeklyExt]" FreeGB="1" Optional="yes" />

    </Targets>

<!--

Es wird abwechselnd auf den internen Laufwerken "g:\" und "h:\" gesichert. Zusätzlich wird immer auf einer externen Festplatte, deren Volumename mit "WeeklyExt" beginnt, gesichert. Wir verwenden derzeit 5 externe Festplatten, bezeichnet mit "WeeklyExt1" bis "WeeklyExt5", die im Wechsel beschrieben werden. Die externen Laufwerke befinden sich normalerweise räumlich getrennt vom Büro, um Risiken wie Brand o.ä. abzudecken. Durch die zusätzlichen Kopien auf interne Platten erreichen wir zusätzliche Redundanz, und wir können die Daten im normalen Betrieb schneller wiederherstellen. Sollte versehentlich kein externes Laufwerk angeschlossen sein, so wird das Backup durch die Angabe Optional="yes" dennoch zumindest für die internen Laufwerke durchgeführt.

-->

    <Sources>

        <Source Path="\\server3\exchangefiles" Name="exchange" />

        <Source Path="\\server3\systemstates" Name="systemstate" />

        <Source Path="\\server3\publicfiles" Name="pub" />

        <Source Path="\\server3\privatefiles" Name="priv" />

    </Sources>

<!--

Das sind die Daten, die gesichert werden. Besondere Daten, die im Betrieb nicht direkt als Dateien gesichert werden können, werden bei uns automatisiert "exportiert" und in besondere Freigaben abgelegt. Im obigen Beispiel sind das die Quellen "exchangefiles" und "systemstates", in denen sich Sicherungen der Systemstates aller Arbeitsplatz-PCs und eines Exchange-Servers befinden.

-->

    <LogFiles Path="c:\Backup\Full\Log" />

<!--

Dies ist der Pfad für die Log-Dateien.

-->

    <ArchiveBit Reset="yes" />

<!--

Nach dem Kopieren wird das Archiv-Bit der Originaldateien zurückgesetzt. Der nächste Lauf des täglichen IncrementalBackup kopiert daher nur Dateien, die seit dem letzen wöchentlichen FullBackup geändert wurden.

-->

    <DayOffset Hours="10" />

<!--

Sollte die Sicherung aus irgend einem Grund nicht ordnungsgemäß funktioniert haben, so kann man den Backuplauf bis 10:00 Uhr am folgenden Tag wiederholen. In diesem Fall wird trotzdem das Datum des Vortages zur Ablage der Sicherung verwendet.

-->

    <Security Copy="yes" />

<!--

Die Sicherheitseinstellungen der Dateien werden mitkopiert.

-->

    <Priority Value="Low" />

<!--

Der Backup-Process wird mit niedriger Priorität gestartet. Dadurch wird auf Ziellaufwerken, bei denen Komprimierung aktiviert ist, schon während des Kopierens komprimiert. Dies ist wichtig, weil sonst die maximale Plattenkapazität nicht ausgenutzt werden kann.

-->

    <Sleep Milliseconds="0" />

<!--

Auf unserem Backup-Server laufen keine weiteren Dienste. Daher ist es nicht notwendig, die Last zu verringern.

-->

    <ExistingDateFolder DeleteBySource="yes" ReuseSwitchTarget="yes" />

<!--

Durch die "ReuseSwitchTarget" Option werden die Daten wieder ins selbe Ziellaufwerk/Verzeichnis geschrieben. Durch die "DeleteBySource" Option wird vor dem Kopieren nicht das gesamte Zielverzeichnis gelöscht, sondern nur die einzelnen Sourcen. Dadurch kann man Zeit sparen, weil bereits erfolgreich kopierte Sourcen erhalten bleiben.

-->

    <DatabaseLogging>

        <Type Name="MSSql" />

        <Connection Name="server=(local);
        uid=user;pwd=geheim;database=backuplog;" />

        <Table Name="backuplog" />

    </DatabaseLogging>

<!--

Informationen über gesicherte Dateien werden zusätzlich in einer MS SQL Datenbank abgelegt.

-->

    <SmtpMail>

        <Server Name="smtp.cptec.org" />

        <To Name="name1@cptec.org;name2@cptec.org;name3@cptec.org" />

        <From Name="backup_server2@cptec.org" />

    </SmtpMail>

<!--

Berichte über den Backup-Lauf werden an die hier definierten E-Mail-Empfänger gesendet.

-->

</Configuration>

Im folgenden sind nur Unterschiede zu Fullbackup.conf beschrieben.

IncrementalBackup.conf

<?xml version="1.0" encoding="utf-8"?>

<Configuration>

    <Targets>

        <Target>

            <Switch Path="g:\" FreeGB="1" />

            <Switch Path="h:\" FreeGB="1" />

        </Target>

        <Target Path="VolumePrefix[DailyExt]" FreeGB="1" Optional="yes" />

    </Targets>

<!--

Es wird abwechselnd auf den internen Laufwerken "e:\" und "f:\" gesichert. Zusätzlich wird immer auf einer externen Festplatte, deren Volumename mit "DailyExt" beginnt, gesichert. Wir verwenden derzeit 2 externe Festplatten, bezeichnet mit "DailyExt1" und "DailyExt2", die im Wechsel beschrieben werden. Die externen Laufwerke bedinden sich normalerweise räumlich getrennt vom Büro, um Risiken wie Brand o.ä. abzudecken. Durch die zusätzlichen Kopien auf interne Platten erreichen wir zusätzliche Redundanz, und wir können die Daten im normalen Betrieb schneller wiederherstellen. Sollte versehentlich kein externes Laufwerk angeschlossen sein, so wird das Backup durch die Angabe Optional="yes" dennoch zumindest für die internen Laufwerk durchgeführt.

-->

    <Sources>

        <Source Path="\\server3\exchangefiles" Name="exchange" />

        <Source Path="\\server3\publicfiles" Name="pub" />

        <Source Path="\\server3\privatefiles" Name="priv" />

    </Sources>

    <LogFiles Path="c:\Backup\Incremental\Log" />

    <ArchiveBit Ignore="no" Reset="yes" />

<!--

Es werden nur geänderte Dateien (Archiv-Bit gesetzt) kopiert. Nach dem Kopieren jeder einzelnen Datei wird deren Archiv-Bit zurückgesetzt.

-->

    <DayOffset Hours="10" />

<!--

Sollte bei der Sicherung einmal etwas schiefgehen, z.B. eine Freigabe nicht erreichbar sein, so kann man mit diesen Einstellungen den Backuplauf bis 10:00 Uhr am folgenden Tag wiederholen. Die Daten werden wieder ins selbe Ziellaufwerk/Verzeichnis geschrieben. Dateien, die in der Zwischenzeit geändert wurden, werden kopiert. Sie überschreiben dabei die gesicherte Version vom Vortag. Bereits kopierte und seitdem nicht mehr geänderte Dateien werden nicht mehr kopiert. Sie sind bereits auf dem Ziellaufwerk vorhanden.

-->

    <Security Copy="yes" />

    <Priority Value="Low" />

    <Sleep Milliseconds="0" />

    <DatabaseLogging>

        <Type Name="MSSql" />

        <Connection Name="server=(local);
        uid=user;pwd=geheim;database=backuplog;" />

        <Table Name="backuplog" />

    </DatabaseLogging>

    <SmtpMail>

        <Server Name="smtp.cptec.org" />

        <To Name="name1@cptec.org;name2@cptec.org;name3@cptec.org" />

        <From Name="backup_server2@cptec.org" />

    </SmtpMail>

</Configuration>

Test der Konfiguration

Mit dem Kommandozeilen-Parameter "test" kann die Konfiguration überprüft werden.

Dabei werden folgende Tests durchgeführt:

Es werden dabei keine Daten gesichert und auch nichts protokolliert. Fehler werden direkt auf der Kommandozeile ausgegeben und, wenn möglich, auch per E-Mail gemeldet.


Version 1.0