Backup2l

Aus mxlinuxusers.de

backup2l (backup-to-level) erstellt eigenständig Backups auf einem einbindbaren Dateisystem (z.B. einer Festplatte). Bei einer Standardinstallation werden Backups regelmäßig von einem Cron-Skript erstellt.

Die Hauptentwurfsziele sind geringer Wartungsaufwand, Effizienz, Transparenz und Robustheit. Alle Steuerdateien werden zusammen mit den Archiven auf dem Backup-Medium gespeichert und ihr Inhalt erklärt sich meist von selbst. Daher kann ein Benutzer - falls nötig - die Dateien durchsuchen und Archive manuell extrahieren.

backup2l ermöglicht differentielle Backups auf mehreren hierarchischen Ebenen (Level). Dadurch ist es möglich, kleine inkrementelle Backups in kurzen Intervallen zu erstellen, während die Gesamtzahl der Archive seit dem letzten vollen Backup nur logarithmisch zunimmt.

Durch eine offene Treiberarchitektur kann man so gut wie jedes Archivierungsprogramm als Backend benutzen. Die integrierten Treiber unterstützen die Dateiformate .tar.gz, .tar.bz2 und andere. Weitere benutzerdefinierte Treiber können hinzugefügt werden

Eine eingebaute Aufteilen-und-Sammeln-Funktion ermöglicht es, auf einfache Weise alle oder ausgewählte Archive auf mehrere CD/DVDs oder andere Wechseldatenträger zu übertragen.

Level[Bearbeiten | Quelltext bearbeiten]

backup2l benutzt zur Sicherung verschiedene "Level". Ganz grob gesagt kann man dies mit täglichen, wöchentlichen und monatlichen Backups vergleichen (dies wären dann drei Level), wobei die Zeitabstände und die Anzahl der Level sowie wie viele Backups zu einem Level gehören sollen, selbst festgelegt werden können. Allerdings kann letzteres (wie viel Backups in einem Level = MAX_PER_LEVEL) nur generell festgelegt werden, ist also für alle Level gleich.

Nehmen wir an, es wurden in der Konfigurationsdatei 3 Level (MAX_LEVEL=3) und die Anzahl der Backups pro Level auf 5 (MAX_PER_LEVEL=5) festgelegt, dann ist der Ablauf so:

Beim allerersten Aufruf von backup2l wird immer ein Vollbackup gemacht. Dies ist verständlicherweise nicht anders möglich, da ohne ein Vollbackup kein differentielles Backup gemacht werden kann. Dann werden nacheinander Backups von Level 3 (z.B. täglich) gemacht, bis die Maximalzahl 5 (MAX_PER_LEVEL=5) erreicht ist. Danach wird eine neue Sicherung vom Level 2 (z.B. wöchentlich) erstellt. Nach 5 Level 2-Sicherungen (und 5*5 bei Level 3) wird eine neue Level-2-Sicherung erstellt, und so weiter. Gleichzeitig werden soviel älteste Backups des niedrigeren Levels gelöscht, dass deren Anzahl die in der Option GENERATIONS (s. Tabelle) nicht überschreitet. Jede differenzielle Sicherung enthält die Änderungen gegenüber der vorherigen Sicherung des gleichen oder eines niedrigeren Levels (deshalb "differentielle" Sicherung), Nur die Sicherungen des höchsten Levels (Level 0) sind Vollsicherungen. Ähnlich wie für die Level > 0 existiert auch für die Vollbackups (Level 0) eine Option (MAX_FULL), durch die festgelegt wird, wieviel Vollbackups maximal aufbewahrt werden sollen.

Durch dieses Verfahren wird sicher gestellt, dass genügend Backups vorhanden sind ohne dass zu oft Vollbackups gemacht werden müssen. Dies alles nur zum Hintergrund von backup2l, aber keine Sorge, im praktischen Betrieb muss man sich nicht darum kümmern, backup2l führt diese ganze Level-Arbeit von selbst und automatisch durch.

Nur noch ein Wort zum Schema, wie die Backups benannt werden. Dies geschieht durch die sogenannten Sicherungskennungen (Backup ID, kurz BID). Die Anzahl der Ziffern bestimmt den Level. Level-0-Sicherungen (Vollsicherungen) haben eine 1-stellige BID, Level-n-Sicherungen haben eine BID mit n+1 Ziffern. Die letzte Ziffer ist eine fortlaufende Nummer, das Präfix identifiziert die Backups der unteren Ebenen, auf denen ein bestimmtes Backup basiert. Das Archiv 235 enthält z. B. die Unterschiede zum Archiv 234, und um den Dateisystemzustand zum Zeitpunkt seiner Erstellung wiederherzustellen, müssen die Vollsicherung 2, die Level-1-Sicherungen 21, 22, 23 und die Level-2-Sicherungen 231, ..., 235 verarbeitet werden. Alle Seriennummern liegen zwischen 1 und 9, eine Null im BID zeigt an, dass kein Archiv des jeweiligen Levels in der Kette enthalten ist. Beispielsweise basiert die Level-3-Sicherung 1201 unmittelbar auf der Level-1-Sicherung 12.

Benutzung[Bearbeiten | Quelltext bearbeiten]

Konfigurationsdatei[Bearbeiten | Quelltext bearbeiten]

vor dem ersten Aufruf muss zuerst die Konfigurationsdatei /etc/backup2l.conf bearbeitet werden. Wenn man mit den Einstellungen zufrieden ist unbedingt die Zeile

UNCONFIGURED=1

auskommentieren oder auf Null setzen. Tut man dies nicht, so quittiert backup2l mit einem entsprechenden Hinweis seinen Dienst.

Die Einträge in der Konfigurationsdatei haben diese Form

OPTION=WERT

also z.B.

SRCLIST=(/etc /root /home /var/mail /usr/local)

für die Liste der zu sichernden Verzeichnisse. Dabei sind alle Einträge ausführlich kommentiert (allerdings auf englisch). Deshalb hier nur die wichtigsten Einträge, die unbedingt gemacht werden müssen:

Liste wichtiger Einträge
Eigenschaft Bedeutung Beispiel
SRCLIST Liste der zu sichernden Verzeichnisse, mehrere Einträge durch Leerzeichen getrennt und alle durch ein Klammernpaar eingeschlossen (/etc /root /home /var/mail /usr/local)
SKIPCOND Liste der nicht zu sichernden Verzeichnisse und Dateien. Auszuschliessende Verzeichnisse werden durch die vorangestellte Option -path gekennzeichnet, Dateien durch -name, dabei sind Wildcards wie * möglich. Mehrere Einträge müssen durch -o getrennt werden. So werden in dem Beispiel alle Verzeichnisse die .nobackup im Namen enthalten und alle Dateien mit der Endung .o nicht gesichert.

Möchte man nichts ausschliessen, so muss dies durch den Eintrag

SKIPCOND=(-false)

erfolgen.

Sollen keine Daten ausserhalb des Dateisystems gesichert werden, so kann dies durch Angabe von -xdev oder -mount erfolgen

-path "*.nobackup*" -o -name "*.o" -o -xdev
BACKUP_DEV Mount-Point vom Backup-Device (optionale Angabe) "/media/user/BACKUP"
BACKUP_DIR Zielverzeichnis für das Backup. Es muss schon existieren und sich unterhalb von BACKUP_DEV befinden "/media/user/BACKUP/mx19"
sonstige Einstellungen
Eigenschaft Bedeutung Beispiel
FOR_VERSION gibt die verwendete Version an. Wird bei Updates ausgelesen, um auf eventuelle Inkompatibilitäten hinzuweisen. Also nicht verändern 1.6
VOLNAME beliebiger Name, der den Archivdateien vorangestellt wird. Kann benutzt werden, um z.B. die Backups von zwei Rechnern in einem Verzeichnis zu sichern und trotzdem an Hand des VOLNAMEns unterscheiden zu können "pc1"
MAX_LEVEL maximale Anzahl der Level für differentielle Backups (1..9) 3
MAX_PER_LEVEL maximale Anzahl der differentiellen Backups pro Level 7
MAX_FULL maximale Anzahl der Voll-Backups 2
GENERATIONS Anzahl der aufzubewahrenden Generationen pro Level. Es werden nur so viel alte Sicherungen entfernt, dass noch mindestens GENERATIONS * MAX_PER_LEVEL aktuelle Versionen für das jeweilige Level vorhanden sind.

Beispiel: Nehmen wir mal an, dass die Level-3-Backups täglich durchgeführt werden und MAX_PER_LEVEL=5 und GENERATIONS=2 gesetzt wurde, so kann man immer auf die letzten 10 (5*2) täglichen Sicherungen von Level 3 sowie auf die letzten 10 Sicherungen von Level 2 (z.B. 5, 10, 15 ... 50 Tage alt) zugreifen usw.

1
CREATE_CHECK_FILE auf 1 setzen, wenn eine Prüfdatei zur Kontrolle der Archive erzeugt werden soll. Sollte man machen 1
PRE_BACKUP selbstdefinierte Bash-Funktion, die vor dem Backup ausgeführt wird. Hier und bei POST_BACKUP muss man sich an die Bash-Syntax für Funktionen halten, also anders als sonst kein Gleichheitszeichen. Siehe Minibeispiel nebenan
PRE_BACKUP ()
{
  echo "  pre-backup: nothing to do"
}
POST_BACKUP selbstdefinierte Bash-Funktion, die nach dem Backup ausgeführt wird. Ansonsten gilt das gleiche wie bei PRE_BACKUP
POST_BACKUP ()
{
  echo "Backup beendet."
  umount -a
 }
AUTORUN Backup auch ohne Option starten, wenn AUTORUN=1 gesetzt wird 0
SIZE_UNITS setzt im Abschlussbericht von backup2l die Anzeige-Einheit für die Dateigrössen ("B", "K", "M" oder "G") "M"
TIME_ZONE benutzte Zeitzone für die Zeitstempel der Archivdateien. Wird TIME_ZONE nicht gesetzt (TIMEZONE="") so wird die lokale Zeitzone angewandt.

Empfehlung: UTC

"UTC"
UNCONFIGURED zeigt an, ob die Konfigurationsdatei bearbeitet wurde. Steht nach der Installation auf UNCONFIGURED=1, muss also unbedingt auf 0 gesetzt oder auskommentiert werden, damit backup2l überhaupt startet 0
CREATE_DRIVER wer möchte, kann hier eigene Treiber für Komprimierungsprogramme registrieren. Für Details bitte selbst in der Konfigurationsdatei nachsehen, dort gibt es mehrere Beispiele

Optionen für die Kommandozeile[Bearbeiten | Quelltext bearbeiten]

wie üblich sind Parameter in eckigen Klammern [] optional, können also weggelassen werden. Gibt man sie an, dann aber ohne die eckigen Klammern.

Kommandozeilen-Optionen
Option Bedeutung
-c PFAD/ZUR/KONFIGURATION wenn eine andere Konfigurationsdatei als /etc/backup2l.conf eingelesen werden soll
-t BID legt für die Optionen -l und -r fest, dass das Backup mit der BID (=Backup ID) wiedehergestellt werden soll. Ohne diese Angabe wird immer die letzte verfügbare Sicherung ausgewählt
-h Hilfetext anzeigen
-e Gibt die Anzahl der Dateien, die geschätzte Datenmenge und andere Informationen zum Backup aus, das als nächstes erstellt würde. Es werden aber keine Sicherungsarchive erstellt oder entfernt. sondern nur diese Infos angezeigt
-b [Level] Erstellt eine neue Sicherung und entfernt alte Archive wenn deren Anzahl das in der Konfigurationsdatei angegebene Level (MAX_LEVEL) überschreitet. Wenn angegeben, überschreibt der Parameter LEVEL die Einstellung MAX_LEVEL. Dies ist z. B. kurz vor oder nach größeren Änderungen am Dateisystem sinnvoll. In diesem Fall sollte ein niedrigerer Level angegeben werden, um zu vermeiden, dass eine große Anzahl von Dateien erneut mehrfach gesichert wird
-s zeigt eine Zusammenfassung aller bisherigen Backups an (Backup-ID, Datum, Uhrzeit, Backup-Grösse, Anzahl gesicherter Dateien usw.)
-a [MUSTER] zeigt alle entfernten und hinzugefügten Dateien für alle Backups an. Ein '+' in der Ausgabe zeigt an, dass die Datei neu ist und somit in der Archivdatei enthalten ist. Ein '-' zeigt an, dass die Datei entfernt (oder ersetzt) wurde. Wenn ein oder mehrere MUSTER übergeben werden, wird grep zum Filtern der Liste verwendet. Alle Statusmeldungen gehen nach stderr, so dass die erzeugte Dateiliste einfach umgeleitet werden kann.

Hinweis: Das Suchmuster wird nicht nur auf die Dateinamen angewendet, sondern auf den gesamten Eintrag. Dadurch kann man nicht nur nach Dateinamen suchen, sondern auch nach anderen Attributen wie Eigentümer, Änderungszeit usw.

-l [MUSTER] wie -a, es wird aber nur das neueste Backup bzw. das mit der Option -t (s.o.) ausgewählte angezeigt und bei Angabe von MUSTER durchsucht
-r [MUSTER] stellt die Dateien des neuesten Backups bzw. die mit MUSTER ausgewählten Dateien wieder her, in Verbindung mit -t BID werden die Dateien des Archives mit der betreffenden Backup-ID wieder hergestellt.

Achtung: Die Wiederherstellung erfolgt relativ zu dem Verzeichnis, in dem man sich gerade befindet. Bei dieser Befehlsfolge

cd /tmp; sudo backup2l -r

werden also alle Dateien relativ zu /tmp wieder hergestellt, so dass sich z.B. solche Verzeichnisstruktur ergibt:

/tmp/home/gosia/Bilder/...
-p BID löscht alle Archive und deren Abhängigkeiten mit der angegebenen Backup-ID (BID)
-m [BID] erzeugt ein Kontrollfile für die Archive mit der BID, ist keine BID angegeben, für alle Archive
-v [BID] Kontrolliert die Unvershrtheit der Archive mit der BID, wird keine BID angegeben, dann die Unversehrtheit aller Archive. Wenn ein zugehöriges Checkfile existiert, dann mit Hilfe der darin gespeicherten Checksummen. Gibt es keine Checkdatei kann nur kontrolliert werden, ob die Archivdaten vorhanden und lesbar sind
-x capacity max-free BID-list Aufteilen und Sammeln von Dateien, die auf Wechseldatenträgern (z. B. CDs) gespeichert werden sollen. capacity ist die Kapazität des Datenträgers in MB. max-free ist die maximale Menge an freiem Speicherplatz auf jedem Datenträger (außer dem letzten). BID-Liste spezifiziert die Archive und kann Platzhalter enthalten, z. B.: 1 '2*'. Die Operation erzeugt durchnummerierte Unterverzeichnisse, die den Inhalt der Medien repräsentieren. Es werden einige weitere Dateien erzeugt, die z.B. zum Drucken von Etiketten nützlich sein können.

Die Reihenfolge der Dateien bleibt erhalten und alle Steuerdateien eines Archivs befinden sich immer zusammen auf demselben Medium. Große Archivdateien werden in mehrere Dateien aufgeteilt, an deren Namen fortlaufende Nummern angehängt werden.

Der Vorgang ist interaktiv, d.h. er kann auch gestoppt werden.