BSD-Wiki

Mitschrift einer FreeBSD-Installation

Benutzer-Werkzeuge

Webseiten-Werkzeuge


backup_des_systems

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

backup_des_systems [2017/10/02 13:39] (aktuell)
Zeile 1: Zeile 1:
 +====== Allgemein ======
 +Jede Festplatte wird früher oder später das Ende Ihrer Tage erreichen. Ist dieser Fall eingetreten kann, je nach Schaden, der Zugriff auf die darauf gespeicherten Daten nichtmehr mit //​normalen//​ Mitteln ermöglicht werden. Es gibt noch andere Szenerien die dafür sorgen können, dass die Daten auf der Festplatte verloren gehen (z.B. Absturz des Rechners, Blitzeinschlag,​ versehentliches Löschen, etc.). Aus diesem Grund muss man immer damit rechnen, dass die gespeicherten Daten verloren gehen können.
 +
 +Um dieser Problematik entgegen zu treten werden Backups, also Sicherungskopien,​ der Daten angelegt. Sinnvollerweise sollten die Backups nicht auf dem selben Datenträger gespeichert werden wie die Originaldaten. Des weiteren wäre es empfehlenswert die Backups nicht fest im selben Rechner angeschlossen zu haben, denn eine Überspannung könnte somit alle Festplatten zugleich schädigen.
 +
 +====== WARNUNG ======
 +Das folgende Vorgehen verwendet das Programm **dump** zum Erzeugen der Backups. Dieses führt jedoch unter FreeBSD 9.0 zu Systemabstürzen wenn es in Kombination mit [[Journaling Softupdates]] verwendet wird. Anwender von Journaling Softupdates sollten daher hier Vorsicht walten lassen. Wird kein Journal verwendet (also nur die normalen Softupdates) treten diese Probleme nicht auf.
 +
 +====== Hinweis ======
 +//**Backups können die Daten des Rechners nur vor Verlust schützen wenn sie korrekt erstellt und korrekt wieder eingespielt werden!**//
 +
 +Es ist zu empfehlen die Erstellung von Backups per Script durchzuführen um Tippfehler zu umgehen. Nach Veränderung des Erstellprozesses sollten die Backups exemplarisch getestet werden um sicher zu sein, dass sie im Notfall funktionieren. Sowohl das falsche Sichern als auch das falsche Zurückspielen der Daten kann zum kompletten Datenverlust führen!!
 +
 +//**Es wird erneut darauf hingewiesen,​ dass keine Garantie für die Korrektheit der hier angegebenen Informationen übernommen werden kann!**//
 +
 +====== Manuelle Backups ======
 +Folgend wird der Vorgang beschrieben wie manuell Backups des Systems erstellt werden. Um sinnvoll und regelmässig zu sichern ist eine automatisierte Sicherung zu empfehlen!
 +Dieser Absatz kratzt nur sehr flach an der Oberfläche von Datensicherungen. Es ist dringend empfohlen sich tiefer, auch über andere Quellen, diesbezüglich zu informieren. Die Befassung mit den entsprechenden Manpages wird vorrausgesetzt.
 +
 +===== Dump =====
 +Zum Sichern von Partitionen wird das Programm //dump// verwendet. Das Backup muss mit **root**-Rechten erstellt werden.
 +
 +<​code>​
 +# dump -0 -Lauf /​backup/​root-ad0s1a /dev/ad0s1a
 +</​code>​
 +Hier wird angenommen, dass die Partition **ad0s1a** (welche in diesem Beispiel **/** ist) in die Datei **root-ad0s1a** im Verzeichnis **/backup** gesichert wird. Es handelt sich hierbei um ein Level-0-Dump (alle Daten werden gesichert). Natürlich sollte zuvor in das Verzeichnis **/backup** ein Datenträger gemoutet werden (gerade beim Sichern von **/** läge sonst das Backup in sich selbst).
 +
 +===== Restore =====
 +Um die gesicherten Daten wieder herzustellen muss sich das System im selben Zustand befinden wie zum Zeitpunkt als die Daten gesichert wurden. Das soll heissen, dass die Partitionen an den selben Stellen liegen müssen wie zuvor (daher wurde in die Namen der Backups auch der Devicename übernommen).
 +Um ein zerstörtes System wieder herzustellen sollte über die CD ein Basis-System mit selben Einstellungen wie im alten System installiert werden. Hier geht es nur darum, dass die **Slices** und **Partitionen** richtig angelegt werden. Da die Daten aus dem Backup aufgespielt werden muss kein System installiert werden!
 +
 +Die Zielpartitionen der Backups müssen in das System eingebunden werden. Als Beispiel:
 +<​code>​
 +# mount /dev/ad0s1a /mnt
 +</​code>​
 +
 +Das Backup wird über Restore im //​**aktuellen Verzeichnis**//​ eingespielt! Daher ist **vor** dem Absetzen des Restore-Kommandos dies nochmals zu prüfen:
 +<​code>​
 +# cd /mnt
 +# pwd
 +</​code>​
 +
 +Um das Backup, welches angenommen wieder unter /backup eingebunden wurde, zurückzuspielen wird folgend vorgegangen:​
 +<​code>​
 +# restore -rf /​backup/​root-ad0s1a
 +</​code>​
 +
 +Sind mehrere Level-Dumps vorhanden so müssen sie aufsteigend installiert werden (0, 1, 2,...) bis zum aktuellsten dump.
 +
 +====== Automatische Backups ======
 +Automatische Backups sollten per Cron (oder bei Desktoprechnern mit Anacron) durchgeführt werden. Dies erfolgt über entsprechende [[Backupscript]]e.
 +
 +===== Zu sichernde Partitionen =====
 +Die folgenden Angaben beziehen sich auf die hier dargestellte Partitionsaufteilung und ist ggf anzupassen:
 +<​code>​
 +/dev/ad4s1a on / (ufs, local)
 +/dev/ad4s1e on /tmp (ufs, local, soft-updates)
 +/dev/ad4s1f on /usr (ufs, local, soft-updates)
 +/dev/ad4s1d on /var (ufs, local, soft-updates)
 +/dev/ad8s1d on /data (ufs, local, soft-updates)
 +</​code>​
 +
 +Im weiteren Ablauf werden die drei Partitionen **ad4s1a** (auf **/** eingebunden),​ **ad4s1d** (auf **/var** eingebunden) und **ad4s1f** (auf **/usr** eingebunden) auf die Festplatte **ad8s1d** gesichert welche unter **/data** eingebunden ist.
 +
 +Die Partition **ad4s1e** wird explizit **nicht** gesichert da es sich hierbei um die **/​tmp**-Partition handelt welche nur temporäre Dateien enthält.
 +
 +===== Vorarbeiten =====
 +Die Partition **/​dev/​ad8s1d** muss unter **/data** eingebunden werden und in ihr muss das Verzeichnis **backup** vorhanden sein. Falls dies nicht der Fall ist wird dieses mit folgendem Aufruf angelegt:
 +<​code>​
 +# mkdir /​data/​backup
 +</​code>​
 +
 +Das Verzeichnis sollte nur für **root** zugänglich sein. Dies wird wie folgt erreicht:
 +<​code>​
 +# chmod 700 /​data/​backup
 +</​code>​
 +
 +===== Anlegen der Backupscripte =====
 +Die Scripte zur Erzeugung der Backups werden in den entsprechenden **/​etc/​periodic**-Verzeichnissen angelegt.
 +
 +==== /​etc/​periodic/​monthly/​970.backup-L0 ====
 +<​code>​
 +#!/bin/sh
 +
 +#Datum in richtiger Reihenfolge setzen
 +DATUM=$(date +%Y%m%d)
 +LEVEL=0
 +
 +#  /usr/ports soll nicht gesichert werden da es wieder vollständig herstellbar ist.
 +/​bin/​chflags -R nodump /usr/ports
 +
 +
 +# Es folgen die Dumps (nach Wunsch kann '-h 0' hinzugefügt werden um bei Level0 Dumps die '​nodump'​ Dateien nicht mitzusichern:​
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​root-ad4s1a_$DATUM-L$LEVEL /dev/ad4s1a
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​var-ad4s1d_$DATUM-L$LEVEL /dev/ad4s1d
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​usr-ad4s1f_$DATUM-L$LEVEL /dev/ad4s1f
 +</​code>​
 +
 +Mit Hilfe dieses Scriptes werden Level0-Dumps erzeugt. Sie bilden die Basis aller folgenden inkrementellen Backups. Regelmäßig sollte ein neues Level0-Dump erzeugt werden worauf die neuen inkrementellen Backups erzeugt werden.
 +
 +==== /​etc/​periodic/​weekly/​971.backup-L1 ====
 +<​code>​
 +#!/bin/sh
 +
 +#Datum in richtiger Reihenfolge setzen
 +DATUM=$(date +%Y%m%d)
 +LEVEL=1
 +
 +#  /usr/ports soll nicht gesichert werden da es wieder vollständig herstellbar ist.
 +/​bin/​chflags -R nodump /usr/ports
 +
 +
 +# Es folgen die Dumps (nach Wunsch kann '-h 0' hinzugefügt werden um bei Level0 Dumps die '​nodump'​ Dateien nicht mitzusichern:​
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​root-ad4s1a_$DATUM-L$LEVEL /dev/ad4s1a
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​var-ad4s1d_$DATUM-L$LEVEL /dev/ad4s1d
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​usr-ad4s1f_$DATUM-L$LEVEL /dev/ad4s1f
 +</​code>​
 +
 +Dieses Script erzeugt Level1-Dumps. Also inkrementelle Backus im Bezug zum letzten Level0-Dump.
 +
 +==== /​etc/​periodic/​daily/​972.backup-L2 ====
 +<​code>​
 +#!/bin/sh
 +
 +#Datum in richtiger Reihenfolge setzen
 +DATUM=$(date +%Y%m%d)
 +LEVEL=2
 +
 +#  /usr/ports soll nicht gesichert werden da es wieder vollständig herstellbar ist.
 +/​bin/​chflags -R nodump /usr/ports
 +
 +
 +# Es folgen die Dumps (nach Wunsch kann '-h 0' hinzugefügt werden um bei Level0 Dumps die '​nodump'​ Dateien nicht mitzusichern:​
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​root-ad4s1a_$DATUM-L$LEVEL /dev/ad4s1a
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​var-ad4s1d_$DATUM-L$LEVEL /dev/ad4s1d
 +/sbin/dump -$LEVEL -Lauf /​data/​backup/​usr-ad4s1f_$DATUM-L$LEVEL /dev/ad4s1f
 +</​code>​
 +
 +Es sind Dump-Levels bis 9 möglich.
 +
 +===== Ausführbar machen der Scripte =====
 +Die Scripte müssen nach Erstellung noch ausführbar gemacht werden.
 +Dies geschieht mit den Aufrufen:
 +<​code>​
 +# chmod 744 /​etc/​periodic/​monthly/​970.backup-L0
 +
 +# chmod 744 /​etc/​periodic/​weekly/​971.backup-L1
 +
 +# chmod 744 /​etc/​periodic/​daily/​972.backup-L2
 +</​code>​
 +
 +Nun sammeln sich in dem Ordner **/​data/​backups** eine ganze Reihe Dumps an. Nach einem Monat sollte ein neuer Level0-Dump erzeugt werden womit alle älteren Dumps gelöscht werden können. Neu erzeugte Dumps >0 beziehen sich immer auf den zuletzt erzeugten Dump mit nächst kleinerem Dumplevel.
 +
 +===== Einzelne Dateien wiederherstellen =====
 +Um einzelne Dateien aus einem Dump wiederherzustellen wir der dump per restore mit der Option **-i** gestartet.
 +<​code>​
 +restore -i -f dumpfile
 +</​code>​
 +
 +In der sich nun öffnenden Restorekonsole kann man sich mit //cd// durch den Dump bewegen. Die Befehle //pwd// und //ls// werden ebenfalls unterstützt. Somit mwird an die Stelle navigiert an welcher die zu rettende Datei liegt.
 +Die Datei wird dann in die Wiederherstellungsliste übernommen. Auf diesem Weg können auch mehrere Dateien in die Liste aufgenommen werden.
 +<​code>​
 +restore > add dateiname
 +</​code>​
 +
 +
 +Anschließend wird die Liste exportiert
 +<​code>​
 +restore > extract
 +</​code>​
 +
 +Mit quit wird die Konsole verlassen.
 +<​code>​
 +restore > quit
 +</​code>​
 +
 +Die gerettete Datei liegt nun im Verzeichnisbaum an ihren ursprünglichen Ort (relativ zum aktuellen Pfad).
 +
 +===== Zusammenfassung =====
 +Es wurden nun drei ausführbare Scripte erstellt die Dumps der zu sichernden Dateisysteme anlegen. Es werden monatlich Level0-Dumps durchgeführt. Jede Woche wird hierauf ein Level1-Dump erzeugt. Täglich wird ein Level2-Dump erzeugt.
 +Die Dumps werden unter /​data/​backup angelegt. Hier sammeln sich nun eine Vielzahl von Dateien nicht unerheblicher Größe. Die Dateien sind durch das Datum und das Dumplevel in ihrem Namen gekennzeichnet.
 +Dumps auf die sich keine höheren Dumplevels mehr beziehen können gelöscht werden, wenn kein Anspruch auf eine Historie besteht.
  
backup_des_systems.txt · Zuletzt geändert: 2017/10/02 13:39 (Externe Bearbeitung)

Impressum