Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


Standard-Backup-Tools

Grundlagen Backup ] [ Standard-Backup-Tools ] Backup im Netzwerk ] Bandlaufwerke ] rsnapshot / dirvish / rdiff-backup ] BackupPC ] Amanda ]


Auf der vorliegenden Seite werden Standard-Methoden unter Unix/Linux anhand von Routinen wie: Sichern, Wiederherstellen, Überprüfen usw. aufgezeigt. Dabei kommen die Standard-Tools wie: 'cp', 'tar', 'cpio', 'afio', 'pax', 'dump'/'restore' und 'dd' zur Anwendung. Die vorgestellten Mechanismen können leicht zu eigenen Konzepten zur Datensicherung in Form von Shell-Skripten eingesetzt werden. Bei allen vorgestellten Beispielen sollte das Medium, auf dem die Daten gesichert werden, keine Rolle spielen, d.h. es sollte egal sein, ob auf Diskette, Festplatte, Bandlaufwerk, Datei etc. gesichert wird. Bei den folgenden Beispielen wird nur ein lokales System berücksichtigt, äquivalente Methoden für netzweite Aktion werden auf den folgenden Seiten separat vorgestellt.

Backup mit 'cp'

Den einfachsten Backup kann man mit dem, zu jeden Unix/Linux gehörenden, Kopierprogramm 'cp' erreichen, dabei wird hinter dem Kommando einfach Quelle und Ziel angegeben. Durch entsprechenden Optionen kann das Verhalten beeinflusst werden. Hierzu ein Beispiel:

cp -duRp /tmp/* /backup

Es werden aus dem Verzeichnis '/tmp/' alles in das Verzeichnis '/backup' kopiert. Die Optionen '-duRp' bedeuten, es werden alle Links, Zeit/Datums-Angaben und Unterverzeichnisse kopiert, jedoch nur die Dateien die sich seit der letzten Synchronisation geändert haben. Weitere Optionen von 'cp' können auf der Manualseite nachgelesen werden.

Backup mit 'tar'

Das Kommando 'tar' (Tape Archiver), wurde ursprünglich zur Datensicherung auf Bändern konzipiert. es ist das gängigste Werkzeug zur Datensicherung auf Unix-Systemen. 'tar' arbeitet auf Datei-Ebene und kann beliebige Dateien und Verzeichnisse in einer einigen Zieldatei zusammenpacken. Die Zieldatei kann z.B. ein Bandlaufwerk oder auch eine Datei sein. Die drei wichtigsten Optionen zu 'tar' sind:

  • -c (create) - Erzeugen eines Archives
  • -t (table) - Auflisten des Archivinhalts
  • -x (extract) - entpacken des Archivs

Um eine volle Sicherung mit 'tar' durchzuführen, wird das Kommando wie folgt angewandt:

tar -cf /backup/archiv.tar ./*

Dabei steht '-c' für das Erzeugen eines Archivs und 'f' gibt das Gerät an, auf dem gesichert wird. Mit dem Ausdruck './*' werden alle Dateien, inklusiv aller Unterverzeichnisse, von der aktuellen Position im Dateisystem aus gesichert.

Um alle Dateien und Verzeichnisse zu sichern, die nach einem bestimmten Datum verändert wurden, ist die Option '-N', gefolgt mit dem Datum anzuwenden:

tar -N 2002-12-02 -cf /backup/archiv.tar ./*

In diesem Beispiel werden alle Änderungen nach dem '2. Dezember 2002' berücksichtigt.

Um den Inhalt eines 'tar'-Archives aufzulisten, ist die Option '-t' anzuwenden:

tar -tf /backup/archiv.tar

Damit die zu bearbeitende Dateien ausführlich gelistet werden, kann noch zusätzlich die Option 'v' (verbose) hinzugefügt werden.

Auch das Überprüfen eines Archivs ist im 'tar'-Kommando implementiert:

tar -df /backup/archiv.tar

Es werden alle Dateien im aktuellen Verzeichnis mit denen auf in der angegebenen Datei 'archiv.tar' verglichen und evtl. Diskrepanzen ausgegeben.

Soll der komplette Inhalt des Archivs wieder zurückgespielt werden, ist die Option '-x' anzuwenden:

tar -xf /backup/archiv.tar

Auch hier sollte man sich in dem Verzeichnis befinden, wo die Daten hingelangen sollen.

Backup mit 'cpio'

Das Unix-Kommando 'cpio' (copy in/out) besitzt einen ähnlichen Funktionsumfang wie 'tar'. Der Vorteil gegenüber 'tar' ist, 'cpio' kommt mit beschädigten Archiven besser klar und vermag zumindest den unversehrten Teil komplett wieder herzustellen. 'cpio' kennt drei Betriebsarten, wobei grundsätzlich eine ausgewählt werden muss, deren Verhalten durch weitere Optionen bestimmt wird. Die drei Betriebsarten sind:

  • copy in (Option '-i') zum Extrahieren von Dateien aus einem Archiv
  • copy out (Option '-o') zum Erzeugen eines Archivs
  • pass througth (Option '-p') als Kombination aus den obigen Modi erlaubt das Kopieren ganzer Verzeichnisbäume

Um ein volles Backup in ein Archiv zu sicheren, ist der 'copy out'-Mode (Option '-o') zu verwenden. 'cpio' übernimmt dazu eine Liste von Dateinamen und erzeugt daraus ein Archiv, welches zur Standardausgabe geschickt wird.

find ./ -depth | cpio -o > /backup/archiv.cpio

Im folgenden Bsp. wird mit dem Kommando 'find' eine Archiv des aktuellen Verzeichnisses auf dem Diskettenlaufwerk erzeugt. Die 'find'-Option '-depth' wird empfohlen, um mögliche Schwierigkeiten beim Extrahieren des Archivs vorzubeugen.

Möchte man ein inkrementelles Backup in ein Archiv schreiben, so kann im 'find'-Kommando die Option '-mtime' angewandt werden. Mit der Option werden alle Dateien , die innerhalb einer bestimmten Zeitspanne  geändert wurden, dem Archiv zugeführt.

find ./ -mtime -4 -depth | cpio -o > /backup/archiv.cpio

In diesem Beispiel werden alle Dateien berücksichtigt, deren Modifikationszeit nicht älter als vier Tage ist.

Um sich den Inhalt eines Archivs aufzulisten, ist folgendes Kommando mit 'cpio' zu verwenden:

cpio -itvI /backup/archiv.cpio

Die Option '-t' bewirkt die Anzeige des Archivinhalts und verhindert das Extrahieren. Mit der Option '-v' (verbose) werden die zu bearbeitende Dateien ausführlich gelistet und '-I' lässt 'cpio' die Dateien aus dem Archiv anstatt von der Standardeingabe lesen.

Ein Vergleich der Dateien im Archiv mit den Dateien im Verzeichnisbaum ist nicht direkt möglich. Hier kann nur ein Entpacken der Daten in ein separates Verzeichnis, mit anschließendem Dateivergleich (z.B. mit 'diff') helfen.

Um komplett das Archiv inklusiver aller Daten mit 'cpio' wieder zurück schreiben zu können, ist hierzu der 'copy in'-Mode zu verwenden (Option '-i').

cpio -id < /backup/archiv.cpio

Die Option '-d' erzwingt das Anlegen von Verzeichnissen, falls diese nicht schon existieren.

Möchte man nur bestimme Dateien aus dem Archiv zurücksichern, so sind diese hinter den Optionen als reguläre Ausdrücke anzugeben.

cpio -id *.doc *.txt < /backup/archiv.cpio

In diesem Beispiel werden nur die Dateien mit der Endungen '.doc' und '.txt' zurückgesichert.

Backup mit 'afio'

Bei 'afio' handelt es sich sozusagen um eine Verbesserung des 'cpio'-Kommandos, es wird ebenfalls das 'cpio'-Datenformat verwendet. 'afio' verarbeitet Eingabedatenfehler jedoch großzügiger als 'cpio'. Die Datenkomprimierung ist sicherer umgesetzt als bei 'cpio' und 'tar'. Des Weiteren unterstützt 'afio' die interaktive Erzeugung von Multivolume-Archiven und anders als 'cpio' unterliegt 'afio' nicht der 2 GB- bzw. 8 GB-Grenze für Archiv-Dateien, was jedoch unter Umständen zu Kompatibilitätsproblemen führen kann. Hierzu ein paar Beispiel mit 'afio':

Sicherung der Dateien und Unterverzeichnisse des aktuellen Verzeichnisses in die Archiv-Datei '/backup/archiv.io'.

find ./ -print -depth | afio -o /backup/archiv.io

Auflisten der im Archiv enthaltenen Dateien, ohne diese zu extrahieren:

afio -t /backup/archiv.io

Wiederherstellen der Dateien aus einem Archiv ins aktuelle Verzeichnis:

afio -i /backup/archiv.io

Backup mit 'pax'

Das Kommandozeilentool 'pax' versteht sich als sich als Nachfolger von 'tar' und 'cpio'. Der Name 'pax' steht für 'portable archive exchange', auch arbeitet das Tool mit einer großen Anzahl verschiedener 'tar'- und 'cpio'-Archiv-Datenformate. Unter Debian-Linux ist 'pax' nicht in der Basis-Installation vorhanden, dieses muss evtl. erst mit 'apt-get install pax' nachgeholt werden. Hier wieder ein paar Beispiele für das Arbeiten mit 'pax':

Sichern eines Verzeichnisses inklusiv aller Unterverzeichnisse:

find ./ -print -depth | pax -wd -f /backup/archiv.pax

Anzeigen der in einer Archivdatei enthaltenen Dateien und Verzeichnisse:

pax -f /backup/archiv.pax

Auspacken der Archivdatei 'test.pax' im aktuellen Verzeichnis:

pax -r < /backup/archiv.pax

Auch 'pax' verfügt über eine Vielzahl von Optionen, die auf der dazugehörigen Manualseite nachgeschlagen werden können.

Backup mit 'dump' und 'restore'

Ein sehr interessantes Werkzeug für Backups unter Unix ist die Kombination 'dump' und 'restore'. Die beiden Programme sind speziell für die Datensicherung ausgelegt, dabei ist 'dump' für das Sichern und 'restore' für das Wiederherstellen der Daten zuständig. 'dump' kann ganze Dateisysteme sichern und unterstützt dabei auch inkrementelle Datensicherungsstrategien, dabei ist es in der Lage die Daten auf mehrere Sicherungsmedien zu verteilen. Ein Nachteil von 'dump'/'restore' ist, es vermag derzeit nur mit Dateisystemen des Typs 'ext2' oder 'ext3' zusammen zu arbeiten. Um 'dump'/'restore' nutzen zu können, muss zunächst 'apt-get install dump' ausgeführt werden.

Beim Backup mit 'dump' (speziell  bei inkrementellen Backups) können noch verschiedene Level unterschieden werden, indem mehrere Sicherungen als Bezugspunkt gewählt werden. Einem vollständigen Backup wird der 'Level 0' zugeordnet. In dem Backups mit Levels größer '0' werden nur die Daten gespeichert, die seit der letzten Sicherung mit einem Level kleiner oder gleich dem aktuellen Level verändert worden sind. In einem Backup 'Level 1' werden also alle Daten gespeichert, die seit dem letzten Vollbackup verändert worden sind und die noch nicht in einem anderen Backup vom 'Level 1' enthalten sind. Im 'Level 2' werden dann nur die Daten gespeichert, die seit dem letzten Backup mit Level '0', '1' oder '2' verändert worden sind und so weiter. Vereinfacht kann man sagen, bei einem Level 'n' wird alles gesichert, was sich bei einen Level 'n-1' geändert hat. 'dump' unterstützt 10 Backup-Level ('0'-'9'), wobei der Default-Level '9' ist. 'dump' selbst ist in der Lage, die Zeiten der letzten Sicherung eines Levels zu notieren und anhand derer zu entscheiden, ob ein erneutes Backup dieses Levels überhaupt notwendig ist. Hierzu schreibt das Kommando, wird es mit der Option '-u' aufgerufen, die Zeiten in die Datei '/etc/dumpdates'. Existiert diese Datei nicht, sollte zuvor eine leere von Hand erzeugt werden.

Nun ein paar kurze Beispiele zur Datensicherung mit 'dump'/'restore':

Um ein volles Backup eines Verzeichnisses auf Diskette zu sichern, kann folgendes verwandt werden:

dump -0 -f /dev/fd0 /etc/

Die Option '-0' besagt, dass es sich hierbei um ein volles Backup handelt, mit '-u' wird ein Stempel in die Datei '/etc/dumpdate' eingefügt und '-f' gibt das Medium an. Gesichert wird dabei das komplette Verzeichnis '/etc' inklusiver aller Unterverzeichnisse.

Möchte man zu einen späteren Zeitpunkt den gleichen Datenbereich inkrementell sichern, so lautet der Aufruf:

dump -1 -f /dev/fd0 /etc/

Die Option '-1' gibt an, dass es sich nun um ein inkrementelles Backup des Levels '1' handelt. Die anderen Optionen haben die gleiche Funktion wie schon beschrieben.

Um sich den Inhalt der einzelnen Archive anzusehen, kommt das Kommando 'restore' mit der Option '-t' (tabel) zum tragen:

restore -t -f /dev/fd0

Um ein gesichertes Archiv mit den aktuellen Datenbestand zu vergleichen, kann ebenfalls das Kommando 'restore' mit dem Parameter '-C' (compare) genutzt werden:

restore -C -f /dev/fd0

Eventuell auftretende Unstimmigkeiten sollen ausgegeben werden.

Um ein komplettes Archiv wiederherzustellen ist 'restore' mit der Option '-r' (rebuild) anzuwenden:

restore -r -f /dev/fd0

Zu beachten ist, dass 'restore' beim Wiederherstellen die Dateien im aktuellen Verzeichnis auspackt. Sollen z.B. Dateien eines Dateisystems '/etc/*.*' wiederhergestellt werden, so ist zuvor an die Wurzel '/' zu wechseln.

Auch können gezielt einzelne Dateien aus dem Archiv zurück gesichert werden:

restore -r -f /dev/fd0 word.doc info.txt

In diesem Beispiel werden die zwei Dateien 'word.doc' und 'info.txt' aus dem Archiv gelesen und extrahiert.

Besonders interessant beim Wiederherstellen von einzelnen Dateien ist der interaktive Mode von 'restore'. Um in den interaktiven Mode zu gelangen, wird 'restore' mit der Option '-i' aufgerufen:

restore -i -f /dev/fd0

Nach dem man sich in den interaktiven Mode befindet, kann das Backup mittels einer 'shell'-ähnlichen Bedienung durchwandert werden. Die einzelnen Befehle die zur Verfügung stehen können mit '?' oder 'help' angezeigt werden. Um Dateien aus dem Backup wieder herzustellen, hangelt man sich mit 'cd' und 'ls' durch die Verzeichnisse, mit 'add' können nun Dateien und Verzeichnisse markiert werden, um sie mit 'extract' zusammen auszupacken.

Backup mit 'dd'

Das Programm 'dd' (disk dump) ist ein Kopierprogramm welches vermag Daten 'roh' zu kopieren, d.h. es wird direkt sektorweise (blockweise) ohne Verwendung des Dateisystems kopiert. Es ist so möglich '1:1'-Kopien von Datenträgern zu erstellen, egal ob es sich dabei um Disketten, CD's, DVD's oder Festplatten handelt, da 'dd' die Blöcke nicht verarbeitet oder interpretiert, spielt es keine Rolle, um welches Dateisystem es sich dabei handelt. Es muss nur sichergestellt werden, dass das Medium direkt gelesen werden kann. So ist es z.B. möglich, dass sogar 'MAC'-Disketten unter Linux kopiert werden können. Auch vor Festplatten mit Fehlern schreckt 'dd' nicht zurück. Der einfachste Aufruf  für 'dd' lautet:

dd if=<source> of=<target>

Über 'if' wird angegeben von wo 'dd' die Daten liest; mit 'of' wird die Ausgabe definiert. Als Quelle und Ziel kann ein Gerät wie z.B. eine Festplattenpartition oder ein CD-/DVD-Laufwerk dienen. Alternativ kann nach dem '='-Zeichen auch eine Datei angegeben werden.
Um z.B. eine CD oder DVD als ISO-Image auf dem Dateisystem abzulegen, kann folgendes Kommando verwendet werden:

dd if=/dev/hdc of=image.iso

Das Medium muss dazu nicht ge-mountet sein. Die Laufwerksangabe '/dev/hdc' entspricht den Gerätenamen des entsprechenden Laufwerks, in diesem Beispiel ein CD- oder DVD-Laufwerk. Das ISO-Image landet anschließend in der Datei 'image.iso' des aktuellen Verzeichnisses.
Auch können mit dieser Methode einfach Disketten Kopiert werden:

dd if=/dev/fd0 of=/tmp/floppy.image

Das Image der Diskette wird zunächst nach '/tmp'  als Datei 'floppy.image' kopiert. Nach Einlegen einer Ziel-Diskette kann das Image wieder zurück geschrieben werden:

dd if=/tmp/floppy.image of=/dev/fd0

Das Programm 'dd' verfügt über einige Optionen, wie z.B. 'bs' (block size = Blockgröße). Mit dieser Option kann das Arbeiten des Programms beschleunigt werden. Standardmäßig arbeitet 'dd' mit einer Blockgröße von 512 Byte, d.h. es werden jeweils 512 Bytes eingelesen und dann zur Ausgabe geschrieben. Werden größere Blöcke gewählt, so arbeitet 'dd' entsprechend schneller, z.B. werden mit dem Aufruf von:

dd if=/dev/hda1 of=/dev/hdb1 bs=4k

die Partition mit 4KByte (4096 Bytes) großen Blöcken kopiert. Unterschreitet der letzte Block die angegebene Blockgröße, füllt 'dd' ihn nicht auf.

Neben der Blockgröße kann mit angegeben werden, wieviele dieser Blöcke 'dd' verarbeiten soll. Um z.B. 20 MByte zu kopieren kann 'bs=1M count=20' angegeben werden. Dabei spezifiziert die Option 'count' die Anzahl der Blöcke. Das macht beispielsweise Sinn, wenn der  Boot-Sektor (MBR) einer Festplatte gesichert werden soll:

dd count=1 bs=512 if=/dev/hda of=/dev/fd0/mbr.sav

In diesem Beispiel wird der Bootsektor der ersten Festplatte auf Diskette gesichert. Das Zurückspielen kann wie folgt geschehen:

dd count=1 bs=512 if=/dev/fd0/mbr.sav of=/dev/hda

Des weiteren verfügt 'dd' über weitere Option, wie Zeichen umkodieren (ASCII <=> EBCDIC) oder Umwandlung der Groß/Kleinschreibung. Die weiteren Optionen können auf der Manualseiten nachgelesen werden.

Anmerkungen

Bei 'tar' und 'cpio' sollten keine absoluten Pfade bei der Datensicherung mit angegeben werden, weil dieses bei der Wiederherstellung Probleme bereiten kann.

Bei 'dd' sollte beachtet werden, durch den direkten Gerätezugriff ist bei Tippfehlern sehr schnell der Inhalt eines Boot−Records oder einer Partition/Festplatte zerstört (z.B. 'count' vergessen, 'if'/'of' vertauscht). Daher sollte am besten die Optionen 'if' und 'of' am Ende der Optionsliste angeben werden.

Beim Erstellen von Datei-Archiven, sollte zur besseren Kennzeichnung, je nach verwendeter Archiv-Methode eine entsprechende Endung gewählt werden, so z.B. bei:

  • 'tar' die Endung '.tar'
  • 'cpio' die Endung '.cpio' oder '.io'
  • 'afio' die Endung '.io' oder '.cpio'
  • 'pax' die Endung '.pax'

'tar'-Archive sind oft in komprimierter Form zu finden, die verwendeten Endung dieser Archive liefern Rückschlüsse auf das verwendete Komprimierungs-Programm. Üblicherweise sind folgende Endungen geläufig:

  • '.tar.gz'  <=> 'gzip'
  • '.tgz'     <=> 'gzip'
  • '.tar.z'   <=> 'compress'
  • '.tar.Z'   <=> 'compress'
  • '.tar.bz'  <=> 'bzip'
  • '.tbz'     <=> 'bzip'
  • '.tar.bz2' <=> 'bzip2'
  • '.tbz2'    <=> 'bzip2'

Das komprimieren bzw. de-komprimieren kann z.B. mit den Programm auf der rechten Seite geschehen.

Weitere Infos

Backup-Tipps http://www.debianwiki.de/BackupTipps
Manualseite zu: cp man cp
Manualseite zu: tar man tar
Manualseite zu: cpio man cpio
Manualseite zu pax man pax
Manualseiten zu: dump; restore man dump; man restore
dump and restore mini-HOWTO http://surf.ap.seikei.ac.jp/~nakano/dump-restore/
System-Dokumentation: dump /usr/share/doc/dump
Manualseiten zu: dd man dd
SelfLinux - Backups http://www.selflinux.org/selflinux/pdf/backups.pdf
Wikipedia - Liste der Datenkompressionsprogramme http://de.wikipedia.org/wiki/Liste_der_Datenkompressionsprogramme

Home ] Nach oben ] Grundlagen Backup ] [ Standard-Backup-Tools ] Backup im Netzwerk ] Bandlaufwerke ] rsnapshot / dirvish / rdiff-backup ] BackupPC ] Amanda ]

letzte Änderung: 08. Mai 2009

 

Copyright © 2004 Norbert Eusterholz