> Inhalt: Technik, Anwendungsprogramme und Organisation

Datensicherung und Wiederherstellung unter Linux

* Bitte beachten Sie die Hinweise und Bestimmungen bezüglich Urheberrecht, Haftungsausschluß und geschützte Marken oder Warenzeichen die für dieses Web-Dokument und möglicherweise auch für 'verlinkte' Dokumente gelten.

  • Der Betreiber dieser Web-Site (www.javascout.biz) ist nicht verantwortlich für den Inhalt von Web-Sites, die innerhalb dieses Web-Dokumentes oder anderer Dokumente von www.javascout.biz verlinkt sind.

  • Wenn dieses Web-Dokument oder andere Dokumente dieser Web-Site (www.javascout.biz) Rechte von Ihnen verletzen, oder sie glauben, daß Rechte Anderer (Dritter Personen) dadurch verletzt werden, informieren Sie bitte den Betreiber dieser Web-Site.
    Eine E-Mail können Sie ganz einfach durch anklicken des Symbols oder Textes im Frame rechts oben senden.

Dieses Dokument drucken.

 Letzte Bearbeitung dieses  Dokuments:
2009-05-20

Voraussetzungen für das Verständnis dieses Dokuments:

* Generelle Kenntnisse über die Bedienung von Personal-Computer (PC).

Ungefährer Zeitbedarf zum Durcharbeiten dieses Dokuments:

Arbeitszeit: ca. 30 Minuten.

Dieses Dokument enthält Anleitungen, wie Dateien aus den Verzeichnissen mit den zu sichernden Daten (z.B. /SMB_Disk/daten_gesichert) auf einen 'entfernbaren' Datenträger (z.B. einen USB-Speicher-Stick oder eine Bandkassette) kopiert und bei Bedarf wieder auf die Festplatte des Computers kopiert werden können.

Ein eigener Abschnitt ist dem Sichern und Wiederherstellen von Datenbanken gewidmet.
Der Aufbau und Inhalt von Datenbanken kann nicht direkt kopiert werden. Stattdessen muss die Datenbank 'entladen' werden - d.h. der Aufbau und die Daten werden in einer oder mehreren sequentiellen Dateien gespeichert. Diese Dateien können dann auf einen entfernbaren Datenträger kopiert werden.
Bei der Wiederherstellung muss aus dem Inhalt der sequentiellen Dateien die Datenbank wieder 'aufgebaut' werden.

Inhaltsverzeichnis

Theorie 
* Stufe 1: Minimierung des Schadens bei technischen Gebrechen 
* Stufe 2: Aufbewahrung der gesicherten Daten an einem anderen Ort (Minimierung der Gefahren der Umwelt) 

Vorbedingungen 

Sichern der Daten - Allgemein
 
* Sammeln der zu sichernden Dateien 
* Kopieren auf einen USB-Speicher-Stick 
* Kopieren auf eine Bandkassette 

Periodisches Ausführen der Sicherung 

Wiederherstellen der Daten - Allgemein
 
* vom USB-Speicher-Stick 
* von der Band-Kassette 


Verfahren für besondere Aufgaben
 

* Entladen einer mySQL-Datenbank
 
* Wiederaufbau einer mySQL-Datenbank
 

Theorie:

Eine Aufzeichnung der Arbeitszeit für das Erfassen von Daten wird schon nach kurzer Zeit zeigen, wie wertvoll die gespeicherten Daten sind.
Dabei ist noch nicht einmal der ideelle Wert von unwiederbringlichen Aufzeichnungen, z.B. die Dokumentation von Vorlieben bestimmter Kunden oder Entwürfen noch nicht verwirklichter Projekte, berücksichtigt.

Zusätzlich zu den Gefahren der Umwelt (Brand, Diebstahl, Wasserschaden) sind bei einem Computer auch technische Gebrechen möglich.
Besonders bei technischen Gebrechen, im Konkreten das Versagen der Festplatte mit den gespeicherten Daten, sind die Informationen komplett verloren und können nicht mehr aus unzerstörten Resten (wie zum Beispiel bei einer Beschädigung durch Wasser) rekonstruiert werden.

Es gibt zwar Anbieter, die die periodische Sicherung und die katastrophensichere Aufbewahrung durchführen – wegen der Kosten sind solche Lösungen für einen Kleinbetrieb aber nicht wirtschaftlich.

Eine ausreichende Absicherung gegen den Verlust der Daten kann durch folgende Strategien erreicht werden:
Stufe 1: Minimierung des Schadens bei technischen Gebrechen 
Stufe 2: Aufbewahrung der gesicherten Daten an einem anderen Ort (Minimierung der Gefahren der Umwelt) 

Stufe 1: Minimierung des Schadens bei technischen Gebrechen

Dabei wird in den Computer, der als Datenserver arbeitet, eine zweite Festplatte eingebaut.
Auf diese Festplatte werden regelmäßig (täglich) die zu sichernden Daten kopiert:

Das Risiko, dass beide Festplatten gleichzeitig defekt werden ist minimal.

Bei dieser Lösung bleiben aber noch die Risiken der Gefahren der Umwelt:

Stufe 2: Aufbewahrung der gesicherten Daten an einem anderen Ort (Minimierung der Gefahren der Umwelt)

Dabei werden die zu sichernden Daten zusätzlich auf einen externen Datenspeicher kopiert und dieser Datenspeicher an einem anderen Ort als der Computer aufbewahrt.

Das Risiko, dass die Festplatte im Computer und der externe Datenspeicher gleichzeitig durch ein technisches Gebrechen oder eine Umweltgefahr beschädigt werden ist bei dieser Lösung minimal und gegenüber anderen Risiken der Datenmanipulation – z.B. nicht rechtzeitig entdeckte Sabotage oder Zerstörung der Daten durch einen Programmfehler – zu vernachlässigen.

zum Inhaltsverzeichnis

Vorbedingungen:

zum Inhaltsverzeichnis

Sichern der Dateien - Allgemein

Dieser Abschnitt enthält Muster für Scripts, mit denen in einzelnen Abschnitten die Sicherung der Daten ausgeführt wird.
Diese Scripts werden in einem weiteren Script (siehe
Periodisches Ausführen der Sicherung) aufgerufen mit dem zu einem bestimmten Zeitpunkt die gesamte Datensicherung ausgeführt werden kann.

* Sammeln der zu sichernden Dateien

Für eine 'Zwischenlagerung' ist das Verzeichnis /SMB_Disk/mirror vorgesehen.
Auf dieses Verzeichnis werden alle Unterverzeichnisse mit zu sichernden Daten kopiert – und zwar deswegen weil das Kopieren innerhalb des Computers schneller ausgeführt wird als das Kopieren auf ein externes Speichermedium (z.B. Bandkassette, USB-Speicher-Stick) und das Zeitfenster in dem Inkonsistenzen der Daten auftreten können minimiert wird.
Erfreulicher Nebeneffekt ist, dass die Daten, wie sie zum Zeitpunkt der Datensicherung vorhanden waren, bis zur Durchführung der nächsten Sicherung auch noch auf der Festplatte vorhanden sind.

In einem späteren Schritt werden die im Verzeichnis /SMB_Disk/mirror enthaltenen Dateien auf das externe Speichermedium (z.B. Bandkassette, USB-Speicher-Stick) in komprimierter Form kopiert

Ein mögliches Script für das 'Sammeln' wird hier mit dem Dateinamen /SMB_Disk/daten_gesichert/system_scripts/collect_backup.sh vorgestellt:
#
# Verzeichnis mirror komplett löschen und Verzeichnis neu erstellen
rm -fr /mirror
mkdir /mirror
#
# Kopieren alle Verzeichnisse mit zu sichernden Dateien
cp -R /SMB_Disk/daten_gesichert /mirror
cp -R /SMB_Disk/finanz /mirror
cp -R /SMB_Disk/progs_schreibend /mirror
#
# Verzeichnis gegen unbefugten Zugriff schützen
chgrp -R officeadmin /mirror
chmod -R 440 /mirror
# *** Ende des Scripts ***

Damit das Script gegen unbeabsichtigte Veränderungen durch andere Benutzer als 'root' geschützt ist, werden folgende Berechtigungen gesetzt.
Dazu werden auf eine Kommandozeile (bei laufender GUI in einem 'Terminal'-Fenster) folgende Kommandos ausgeführt:
[root#] chown root /SMB_Disk/daten_gesichert/system_scripts/collect_backup.sh
[root#] chmod 700 /SMB_Disk/daten_gesichert/system_scripts/collect_backup.sh

Dieses Script wird dann in dem unter Periodisches Ausführen der Sicherung vorgestellten Script aufgerufen.

zum Inhaltsverzeichnis

* Kopieren auf einen USB-Speicher-Stick

Die Preise von USB-Speicher-Sticks sind in der letzten Zeit rapide gesunken und deswegen bieten die USB-Speicher-Sticks für das Sichern von Daten eines Kleinbetriebs eine wesentlich kostengünstigere Alternative als Bandkassetten.
Nachdem moderne Computer mit einem USB-Anschluß ausgerüstet sind fallen (im Gegensatz zu Bandkassetten) Investitionen in zusätzliche Hardware weg und es sind nur die notwendigen Speichermedien zu beschaffen.

Damit bei einem notwendigen Suchen einer einzelnen Datei innerhalb einer Archiv-Datei nicht zu große Datenmengen durchsucht werden müssen, wird für jedes einzelne Unterverzeichnis innerhalb des Verzeichnis /mirror eine eigene Archiv-Datei erstellt.

Die kursiv geschriebenen Teile im folgenden Beispiel-Script sind für jede Archiv-Datei anzupassen.
Als Muster wird im Beispiel-Script das Unterverzeichnis
/mirror/daten_gesichert verwendet.

Weiters wird in dem Beispiel-Script davon ausgegangen, dass der USB-Speicher-Stick als Unterverzeichnis Unterverzeichnis /media/disk 'eingehängt' wird.
Abhängig von Ihrer Version des Betriebssystems und dem Hersteller und der Type des USB-Speicher-Sticks kann diese Bezeichnung abweichen.

Das Script erhält den Dateinamen /SMB_Disk/daten_gesichert/system_scripts/backup_USB_daten_gesichert.sh:
#
# Das Script ist für das Archivieren der Daten auf einem USB-Speicher-Stick
#
# Komprimieren der zu sichernden Daten in einer Datei auf dem USB-Speicher-Stick
tar -cf
/media/disk/backup_daten_gesichert.tar /mirror/daten_gesichert
#
# Wenn Dateien mehrerer Unterverzeichnisse in die Archiv-Datei übertragen werden
# sollen werden die zu sichernden Unterverzeichnisse aufgezählt:
#
# Komprimieren der zu sichernden Daten in einer Datei auf dem USB-Speicher-Stick
# tar -cf
/media/disk/backup_daten_gesichert.tar /mirror/daten_gesichert/Verzeichnis_A /mirror/daten_gesichert/Verzeichnis_B
#
# *** Ende des Scripts ***

Damit das Script gegen unbeabsichtigte Veränderungen durch andere Benutzer als 'root' geschützt ist, werden folgende Berechtigungen gesetzt.
Dazu werden auf eine Kommandozeile (bei laufender GUI in einem 'Terminal'-Fenster) folgende Kommandos ausgeführt:
[root#] chown root /SMB_Disk/daten_gesichert/system_scripts/backup_USB_daten_gesichert.sh
[root#] chmod 700 /SMB_Disk/daten_gesichert/system_scripts/backup_USB_daten_gesichert.sh

zum Inhaltsverzeichnis

* Kopieren auf eine Bandkassette

Die Daten im Verzeichnis /mirror mit allen Unterverzeichnissen werden komprimiert auf eine Band-Kassette kopiert.

Ein mögliches Script ist folgendes mit dem Dateinamen /SMB_Disk/daten_gesichert/system_scripts/backup_tape.sh:
#
# Das Script ist für das Archivieren der Daten auf einem
# Bandlaufwerk am SCSI-Anschluß (/dev/st0)
#
# Zurueckspulen des Bandes
mt -f /dev/st0 rewind
#
# Komprimieren der Dateien und Kopieren auf das Band
tar -cvMpf /dev/st0 /mirror
#
# Entladen der Kassette
mt -f /dev/st0 offline
# *** Ende des Scripts ***

Damit das Script gegen unbeabsichtigte Veränderungen durch andere Benutzer als 'root' geschützt ist, werden folgende Berechtigungen gesetzt.
Dazu werden auf eine Kommandozeile (bei laufender GUI in einem 'Terminal'-Fenster) folgende Kommandos ausgeführt:

[root#] chown root /SMB_Disk/daten_gesichert/system_scripts/backup_tape.sh
[root#] chmod 700 /SMB_Disk/daten_gesichert/system_scripts/backup_tape.sh

zum Inhaltsverzeichnis

Periodisches Ausführen der Sicherung

Eine erprobte Methode ist, mit der Service-Application 'cron' (siehe Abschalten eines PC mit Linux um eine bestimmte Uhrzeit) einmal täglich eine Script-Datei zu starten, in der wieder Script-Dateien für einzelne Sicherungsaufgaben gestartet werden.

Ein Vorschlag für eine solche Script-Datei mit Namen /SMB_Disk/daten_gesichert/system_scripts/end_of_day.sh
und folgendem Inhalt:
#
# Datenbanken entladen; bei Bedarf auskommentieren
#/SMB_Disk/daten_gesichert/system_scripts/db_backup.sh
#
# Zu sichernde Dateien auf das Verzeichnis /mirror kopieren
/SMB_Disk/daten_gesichert/system_scripts/collect_backup.sh
#
# Dateien auf dem USB-Speicher-Stick löschen
rm -f
/media/disk/*
#
# Dateien im Verzeichnis /mirror auf den USB-Speicher-Stick kopieren
# (bei Sicherung auf ein Band löschen)
/SMB_Disk/daten_gesichert/system_scripts/backup_USB.sh
# Varianten wenn die zu sichernden Daten auf mehrere Archiv-Dateien aufgeteilt werden.
#/SMB_Disk/daten_gesichert/system_scripts/backup_USB_
daten_gesichert.sh
#/SMB_Disk/daten_gesichert/system_scripts/backup_USB_
xxx.sh
#/SMB_Disk/daten_gesichert/system_scripts/backup_USB_
yyy.sh
umount
/media/disk
#
# Dateien im Verzeichnis /mirror auf das Band kopieren;
# Bei Bedarf den Kommentar entfernen.
#/SMB_Disk/daten_gesichert/system_scripts/backup_tape.sh
#
# Tagesende: Computer abschalten.
shutdown -h now
#
# *** Ende des Scripts ***

Diese Datei liegt im Verzeichnis /SMB_Disk/daten_gesichert damit diese Datei auch in die periodische Sicherung einbezogen wird.
Nachteil ist, daß diese Datei von vielen Benutzern auch geändert werden könnte. Um diese Gefahr abzuwenden, wird das Verzeichnis dem Owner 'root' zugeordnet und damit der Zugriff auf Dateien nur für 'root' erlaubt.
Dazu werden auf eine Kommandozeile (bei laufender GUI in einem 'Terminal'-Fenster) folgende Kommandos ausgeführt:
[root#] chown -R root /SMB_Disk/daten_gesichert/system_scripts
[root#] chmod -R 700 /SMB_Disk/daten_gesichert/system_scripts

Das automatische Ausführen dieses Scripts ist bereits unter Abschalten eines PC mit Linux um eine bestimmte Uhrzeit beschrieben.

zum Inhaltsverzeichnis

* vom USB-Speicher-Stick

In neueren Versionen der einzelnen Linux-Distributionen wird der Dateierweiterung des Typs 'tar' das Programm Archivmanager zugeordnet.
Die Auswahlmöglichkeiten zum Bearbeiten der Entpacken der Archiv-Datei werden nach dem Anklicken des Symbols mit der rechten Maustaste angezeigt.

Wählen Sie Mit >>Archivmanager<< öffnen aus und Sie sehen anschließen die Verzeichnisstruktur.
Innerhalb dieser können Sie zur gewünschten Datei manövrieren und diese wieder 'entpacken' – die Anweisungen des Programms Archivmanager sind selbsterklärend.

zum Inhaltsverzeichnis

* von der Bandkassette

Für das Ausführen der folgenden Kommandos ist eine Anmeldung als 'root' erforderlich.
Bei einer installierten GUI werden die Kommandos in einem Terminal-Fenster eingegeben.
Das Terminal-Fenster wird durch die Auswahl
Anwendungen-Zubehör-Terminal geöffnet.

Bei den folgenden Beispielen wird angenommen, daß das Bandlaufwerk an einem SCSI-Adapter angeschlossen ist.
Da die Dateien auf dem Band in sequentieller Reihenfolge gesichert sind, kann es bis zu einigen Stunden dauern, bis einzelne Verzeichnisse oder Dateien gelistet oder vom Band auf die Festplatte kopiert werden.
Während der Wartezeit werden keine Meldungen angezeigt; es kann nur am Bandlaufwerk selbst erkannt werden ob das Band bewegt wird.

Das Auflisten bzw. Wiederherstellen von einzelnen Dateien, einzelner Verzeichnisse oder des gesamten Inhalt des Bandes erfolgt durch folgende Kommandos:

Bei den Beispielen für das Kopieren vom Band auf die Festplatte wird die Original-Struktur der Verzeichnisse wieder hergestellt.
Soll der Inhalt des Bandes in ein anderes Verzeichnis kopiert werden dann ist der Befehl
cd / durch cd /ZielVerzeichnis zu ersetzen.
Dbei ist
/ZielVerzeichnis durch ein Verzeichnis Ihrer Wahl zu ersetzen. Innerhalb dieses Verzeichnisses wird dann die originale Verzeichnis-Struktur wieder abgebildet.

zum Inhaltsverzeichnis

Entladen einer mySQL Datenbank

Bei den meisten Datenbank-Systemen können die Dateien mit dem Inhalt der Datenbank nicht direkt auf ein Speicher-Medium kopiert werden.
Um den Inhalt von Datenbanken sichern zu können, ist es notwendig, den Inhalt in eine sequentielle Datei zu übertragen. Dieser Vorgang wird als 'Entladen' der Datenbank bezeichnet.

Wie das 'Entladen' im Detail auszuführen ist, hängt vom jeweiligen Hersteller des Datenbank-Systems ab.
Anschließend wird ein Beispiel für das 'Entladen' einer mySQL-Datenbank (mit dem Namen
js_projassist ) vorgestellt.
Wie das Muster-Script Ihren speziellen Bedürfnissen angepaßt werden kann ist nach dem Muster-Script erläutert.

Ein mögliches Script ist folgendes mit dem Dateinamen /SMB_Disk/daten_gesichert/system_scripts/db_backup.sh:
#
# Erstellen des Verzeichnisses für die sequentiellen Dateien
# mit den Inhalten der Datenbanken.
mkdir /SMB_Disk/daten_gesichert/DB_Dumps
#
# Entladen der Datenbank js_projassist.
# 'root' hat Zugriffsrecht auf die Datenbank.
mysqldump js_projassist > /SMB_Disk/daten_gesichert/DB_Dumps/js_projassist.sql
#
# Setzen der entsprechenden Berechtigungen damit nur 'root'
# die entladenen Daten ansehen kann.
chown root /SMB_Disk/daten_gesichert/DB_Dumps/js_projassist.sql
chmod 400 /SMB_Disk/daten_gesichert/DB_Dumps/js_projassist.sql
#
# *** Ende des Scripts ***

Damit das Script gegen Veränderungen durch andere Benutzer als 'root' geschützt ist, werden folgende Berechtigungen gesetzt.
Dazu werden auf eine Kommandozeile (bei laufender GUI in einem 'Terminal'-Fenster) folgende Kommandos ausgeführt:
[root#] chown root /SMB_Disk/daten_gesichert/system_scripts/db_backup.sh
[root#] chmod 400 /SMB_Disk/daten_gesichert/system_scripts/db_backup.sh

Wie bereits erwähnt, ist Voraussetzung, daß 'root' Zugriffsrechte auf die Datenbank js_projassist hat.
Wurde der Zugriffsschutz erhöht und 'root' vom Zugriff ausgeschlossen, muss in den Parametern ein Anwender mit Zugriffsberechtigung (
mysql im folgenden Beispiel) und das Passwort (amEsadS im folgenden Beispiel) 'mitgegeben' werden:
mysqldump -u mysql -pamEsadS js_projassist > /SMB_Disk/daten_gesichert/DB_Dumps/js_projassist.sql

MySQL hat mit den dokumentierten Kommandos eine sequentielle Datei erzeugt, die SQL-Kommandos erhält, die die 'entladene' Datenbank wieder erstellen können.


zum Inhaltsverzeichnis

Wiederaufbau einer mySQL Datenbank

Wie schon beim 'Entladen' der Datenbank dokumentiert, sind auch die Kommandos für das 'Laden' einer Datenbank für jeden Hersteller unterschiedlich.
Das nachfolgend dokumentierte Kommando bezieht sich auf eine mySQL-Datenbank:
mysql < /SMB_Disk/daten_gesichert/DB_Dumps/js_projassist.sql

Bei mySQL kann aus der sequentiellen Datei mit den 'entladenen' Daten eine komplette Datenbank wieder aufgebaut werden.


zum Inhaltsverzeichnis