Mit Tar eine Linux-Installation für den Notfall präparieren

Aus LinuxUser 07/2006

Mit Tar eine Linux-Installation für den Notfall präparieren

© sxc.hu

Linux retten

Wer seine Daten schlau sichert, den schockt selbst ein Festplattencrash nicht sonderlich: Auch ohne Neuinstallation restauriert er sein System im Handumdrehen.

Möglichkeiten zur Datensicherung bietet Linux einige, wie beispielsweise eine Partition mit dd zu speichern. Allerdings benötigt die Eins-zu-eins-Kopie exakt den Speicherplatz, den die Partition auf der Festplatte einnimmt – gleichgültig, ob Daten vorhanden sind oder nicht. Sparsamer ist es, nur die tatsächlich vorhandenen Daten zu sichern, sie in einem Archiv zu bündeln und gleich zu komprimieren. Genau das erledigt unter Linux das Programm Tar.

Schweizer Taschenmesser

Tar ist ein wahres Urgestein der Unix-Geschichte und fehlt als GNU-Variante in keiner Linux-Distribution. Das ursprünglich als “Tape Archiver” entwickelte Programm wurde über die Jahre hinweg stetig erweitert. Seine eigentliche Funktion – Daten auf Bänder zu schreiben – stellte heute nur noch eine von vielen Anwendungsmöglichkeiten dar.

Auf den ersten Blick mag es merkwürdig erscheinen, eine Linux-Installation in einen Tarball zu packen und anderswo zu entpacken, um ein ebenso lauffähiges Linux zu besitzen wie es zuvor. Das liegt an der Vorstellung, Dateien und Verzeichnisse seien nahtlos mit dem Dateisystem verbunden, das wiederum eine Einheit mit dem physikalischen Datenspeicher bilde. Im Grunde aber ergänzen sich die Komponenten. Das erlaubt es, mit dem Befehl

tar -cvjpf /tmp/image-Datum.tar.bz2 /

ein vollständiges Abbild einer Linux-Installation in einer Datei zu bündeln. Diese lässt sich später – sei es im Notfall oder zur Vervielfältigung – auf eine andere Platte und ein anderes Dateisystem entpackten.

Die Option -c veranlasst Tar, ein Archiv zu erzeugen, -p erhält dabei die Zugriffsrechte; -v erzeugt eine ausführliche Ausgabe auf dem Bildschirm. Hinter -f folgt der Name der zu erzeugenden Datei. Der Slash hinter dem Namen der Abbild-Datei gibt den Startpunkt des Archivs an. Die Option -j erzeugt ein Bzip2-komprimiertes Archiv.

Wahlweise kann man anstelle von -j auch -z einsetzen, um das Archiv per Gzip zu komprimierten. Die Unterschiede liegen hier in der Größe des Resultats sowie in der Dauer der Archivierung: Gzip ist schneller, erzeugt jedoch größere Dateien; Bzip2 braucht länger, komprimiert aber besser. Die Dauer eines konkreten Backup-Laufs sowie die Größe des resultierenden Tarballs hängen stark von der Rechnerleistung und den Daten ab.

Inhalte festlegen

Allerdings erzeugt ein Backup nach dem obigen Strickmuster einige Fehlermeldungen: Da Tar ein Abbild von der Wurzel des Dateisystems an erzeugen soll, versucht es, sich selbst in einer Rekursion ins Backup einzubinden. Bei diesem Versuch meldet es, dass die Abbild-Datei sich während des Archivierens verändert hat. Mit diesem Umstand ließe sich zwar leben; es ist aber ohnehin nicht sinnvoll, alle Dateien und Verzeichnisse in das Abbild einfließen zu lassen.

Das Daten aus dem Home-Verzeichnis beispielsweise sollten Sie ohnehin regelmäßig auf ein externes Speichermedium sichern. Im Recovery-Image dagegen haben sie nichts zu suchen, da sie nichts zur eigentlichen Systemwiederherstellung beitragen und zudem den Tarball unnötig aufblähen würden. Dann würde es unter Umständen schwierig, das Image auf ein Wechselmedium wie eine DVD zu brennen.

Um Dateien oder Verzeichnisse explizit aus dem Tarball auszuschließen, bietet Tar die Option --exclude-from an. Diese Option liest die Angaben für Dateien und Verzeichnisse, die nicht mit ins Archiv sollen, aus einer Datei ein:

user # cat << EOF >> /tmp/raus
> /home/*
> /mnt/*
> /usr/portage/distfiles/*
> /tmp/backup-Datum.tar.bz2
> EOF
user # tar -cvjp --exclude-from=/tmp/raus -f /tmp/image-Datum.tar.bz2 /

Die Wildcards hinter der Verzeichnisangabe blenden alle Dateien und Unterverzeichnisse innerhalb des auszuklammernden Verzeichnisses aus. Fehlt die Wildcard, übernimmt Tar das gesamte Verzeichnis nicht ins Archiv. Auch der Dateiname des Images selbst steht in der Exclude-Datei.

Überprüfen Sie vor dem Erstellen des Images auf der Konsole mit Hilfe von mount genau, was im System gerade eingehängt ist. So würden gemountete externe Datenträger oder Netzwerkfreigaben mit ins Abbild einfließen, falls Sie diese nicht aushängen oder ausschließen. Andererseits mounten manche Distributionen aus Sicherheitsgründen die Boot-Partition nicht. Hier ist es wichtig, darauf zu achten, dass sie mit ins Abbild gelangt.

Haben Sie schließlich ein Image mit allen benötigten Inhalten erzeugt, befördern Sie es mittels eines Brennprogramms Ihrer Wahl – etwa K3b [1] – auf eine DVD.

Rettungsanker

Beim Recovery – also dem Wiederaufstellen des erzeugten Images auf eine neue Festplatte –hilft im Falle eines Falles eine Live-CD, von der Sie ein abgespecktes Linux booten. Die bekannteste Live-CD ist wohl Knoppix [2], das eine grafische Oberfläche zur Verfügung stellt (Abbildung 1). Da die notwendigen Arbeiten zum Einspielen des Images aber auf einer Konsole erfolgen, genügen auch textbasierte Live-CDs wie etwa die Gentoo-Live-CD [3], Grml [4, 5] (auch auf der Heft-CD 06/2006) oder die Installationsdatenträger von SuSE oder Red Hat im Rescue-Modus. Sie stellen samt und sonders die notwendigen Programme zur Verfügung.

Damit nach dem Start der Live-Distribution das DVD-Laufwerk wieder für den Datenträger mit dem Image frei wird, müssen Sie die Live-CD so booten, dass das Betriebssystem im Arbeitsspeicher des Rechners abgelegt wird und von dort aus arbeitet. Dies erlaubt, nach dem Hochfahren die Live-CD auszuhängen und gegen den Datenträger mit dem Image auszutauschen. Bei den meisten Live-Systemen heißt der entsprechende Bootparameter toram. Knoppix starten Sie also mit knoppix toram, bei Grml benutzen Sie den Befehl grml toram. Bei der Gentoo-Live-CD erledigt der Befehl gentoo docache das Gewünschte.

Abbildung 1: Die wohl bekannteste Live-CD überhaupt: Knoppix von Klaus Knopper eignet sich hervorragend als Recovery-Werkzeug.

Abbildung 1: Die wohl bekannteste Live-CD überhaupt: Knoppix von Klaus Knopper eignet sich hervorragend als Recovery-Werkzeug.

Festplatte vorbereiten

Vor dem Zurückspielen der Abbilddatei gilt es zunächst einmal, die neue Festplatte zu partitionieren und zu formatieren. Dies erledigen Sie mit dem textbasierten Partitionierungswerkzeug Fdisk.

Unter Linux lassen sich Festplatten über Gerätenamen wie /dev/hda (IDE) oder /dev/sda (S-ATA/SCSI) ansprechen. Der letzte Buchstaben im Gerätenamen (im Beispiel das “a”) bezeichnet die Laufwerks-“Nummer”. So trägt beispielsweise die zweite IDE-Platte im PC den Gerätenamen /dev/hdb, und so fort. Partitionen erhalten laufende Nummern hinter dem Gerätenamen; so handelt es sich bei /dev/sda1 um die erste Partition auf der ersten S-ATA- oder SCSI-Festplatte. Mehr Informationen dazu finden Sie unter [5].

Am Prompt der Live-CD starten Sie nun die Wiederherstellung. Mit fdisk /dev/hda geht es zunächst in den Kommandomodus von Fdisk. Fdisk bietet an seiner Eingabeaufforderung mit dem Befehl m einen Überblick über die Optionen. Handelt es sich nicht um eine fabrikneue Platte, müssen Sie vorab eventuell vorhandene Partitionen löschen. Mit dem Kommando p (“print”) verschaffen Sie sich einen ersten Überblick über die Partitionierung der Platte; mit d (“delete”) lassen sich die Partitionen, eine nach der anderen, löschen.

Die Tabelle “Fdisk-Befehle (Beispiel)” zeigt die notwendigen Kommandos für die Neueinrichtung einer Festplatte mit vier Partitionen. Das muss nicht in allen Fällen genügen: Bei Bedarf legen Sie die vierte Partition als “erweitert” an und können sie dann um einige logische Partitionen ergänzen. Für ein Desktop-System reichen vier Partitionen aber allemal aus.

Fdisk-Befehle (Beispiel)

Name Partition Kommando Typ Nummer Anfang/Code Ende
/boot /dev/hda1 n p 1 [Enter] +64M
swap /dev/hda2 n p 2 [Enter] +1G
/ /dev/hda3 n p 3 [Enter] +10G
/home /dev/hda4 n p 4 [Enter] [Enter]
/dev/hda1 a 1
/dev/hda2 t 2 82

Der Befehl n (“new”) weist Fdisk an, eine neue Partition anzulegen. Fdisk fragt dann nach, ob es sich um eine primäre oder eine erweiterte Partition handelt. Als weitere Angaben erwartet es die Partitionsnummer sowie Start und Ende (als Zylindernummer) beziehungsweise die gewünschte Größe der Partition (in Kilo-, Mega- oder Gigabyte).

Das Kommando a (“active”) markiert die erste Partition als Boot-Partition. Mit t (“type”) hingegen kennzeichnen Sie die Swap-Partition als solche, indem Sie ihr den Typ 82 zuweisen.

Haben Sie die Festplatte mit Fdisk in die gewünschte Aufteilung gebracht, schreiben Sie diese mit einem abschließenden w (“write”) in den Master-Boot-Record (MBR) der Harddisk. Den Erfolg der Partitionierung überprüfen Sie mit dem Kommando fdisk -l /dev/hda (Abb. 2).

Abbildung 2: Die Partitionierung einer Festplatte durch Umleiten der Kommandos an Fdisk. Am Ende die Ausgabe des Resultats.

Abbildung 2: Die Partitionierung einer Festplatte durch Umleiten der Kommandos an Fdisk. Am Ende die Ausgabe des Resultats.

TIPP

Statt die Partitionierungsbefehle manuell einzugeben, können Sie diese auch in eine Steuerdatei schreiben, die Sie anschließend an Fdisk umleiten:

livecd root # cat << EOF >> /tmp/fdisk.part
> n
> p
> 1
>
> +64M
> n
> p
> 2
>
…
> w
> EOF
livecd root # fdisk /dev/hda < /tmp/fdisk.part

Nun gilt es, die frisch angelegten Partitionen für ein Dateisystem zu formatieren, das die Verwaltung der später dort zu lagernden Dateien und Verzeichnisse ermöglicht. Die gängigsten Dateisysteme für Linux-Desktop-Systeme sind Ext2, Ext3 und ReiserFS. Da so genannte Journaling-Dateisysteme wie Ext3 und ReiserFS ein Journal auf die Partition schreiben, benötigen sie dafür etwas mehr Platz.

Für die Boot-Partition im Beispiel ist das bereits eingerechnet; bei einem Dateisystem wie Ext2 genügen für /boot reichen 32 MByte. Die Befehle zur Formatierung lauten für die drei Dateisysteme mkfs.ext2, mkfs.ext3 und mkfs.reiserfs, jeweils mit anhängender Partitionsbezeichnung. Um etwa die Root-Partition aus dem Beispiel für ReiserFS zu formatieren, tippen Sie mkfs.reiserfs /dev/hda3. Die Swap-Partition erstellt der Befehl mkswap /dev/hda2. Eine ausführliche deutschsprachige Übersicht zum Thema Partitionierung finden Sie bei Interesse in der Gentoo-Dokumentation [6].

Abbild zurückspielen

Damit haben Sie fast alle Vorarbeiten erledigt, um das Image auf die Festplatte zurück zu spielen. Im letzten Schritt müssen Sie nun noch die neu erstellten Partitionen ins Dateisystem der Live-CD einhängen. Bei der hier verwendeten Gentoo-Live-CD sieht das folgendermaßen aus:

user # mount /dev/hda3 /mnt/gentoo
user # mkdir /mnt/gentoo/{boot,home}
user # mount /dev/hda1 /mnt/gentoo/boot
user # mount /dev/hda4 /mnt/gentoo/home
user # swapon /dev/hda2

Der hier verwendete Mountpoint /mnt/gentoo stellt eine Konvention von Gentoo Linux dar; bei anderen Live-CDs legen Sie vorab einen geeigneten Mountpoint an. Anschließend hängen Sie zuerst das Wurzelverzeichnis von der Festplatte ein. Die zweite Zeile erzeugt mit einem Befehl die Einhängepunkte für die Boot- und Home-Partition. Dann erfolgt das Mounten dieser beiden Partitionen. Die letzte Zeile schließlich aktiviert die Swap-Partition.

Nun ist die neue Festplatte empfangsbereit für das Image. Um es aufzuspielen, hängen Sie zunächst die Live-CD aus dem System aus. Das erledigt bei den meisten Distributionen der Befehl umount /mnt/cdrom. Nun legen Sie die DVD mit der Abbilddatei ein und mounten sie mit dem Kommando mount /dev/hdb /mnt/cdrom. In diesem Beispiel steht /dev/hdb für die Gerätebezeichnung des DVD-Laufwerks; je nach Hardware-Ausstattung kann es sich dabei aber auch um ein anderes Device handeln. In Rechnern mit S-ATA-Disks heißt das gesuchte Laufwerk meist /dev/hda, bei zwei IDE-Festplatten im Rechner kann es sich auch um /dev/hdc handeln.

Um zu guter Letzt das Image in die richtige Partition (hier: /mnt/gentoo) zu entpacken, verwenden Sie die Befehlsfolge

cd /mnt/gentoo
tar -xvjpf /mnt/cdrom/image-Datum.tar.bz2

Der Unterschied zum Verpacken liegt hier in der Option -x, die für “extract” steht und das Archiv entpackt. Dieser Vorgang dauert wie das Archivieren eine ganze Weile – erfolgt aber mehrfach schneller als eine Neuinstallation.

Nacharbeiten

Bleiben Partitionen und Laufwerkshierarchie gegenüber der ursprüünglichen Installation erhalten, brauchen Sie keine Konfigurationsänderungen neim Bootmanager oder der Partitionstabelle vorzunehmen. Änderungen in der Partitionierung der neuen Festplatte aber müssen Sie in der zurückgesicherten /etc/fstab eintragen. Haben Sie das Image “umgezogen”, also beispielsweise statt wie ursprünglich auf die erste auf eine zweite Festplatte entpackt, müssen Sie die Einträge in /boot/grub/grub.conf entsprechend anpassen.

Der entscheidend abschließende Eingriff bei einer Wiederherstellung auf eine neue Festplatte besteht jedoch darin, den noch fehlenden Bootmanager in den MBR der ersten Harddisk zu installieren. Geschieht das nicht, läuft der erste Bootvorgang ins Leere. Nahezu alle aktuellen Distributionen verwenden als Bootmanager Grub (Grand Unified Boot Loader), der sich mittels eines kleinen Tricks aus den Daten aus dem wiederhergestellten Image reinstallieren lässt. Die Befehle

user # mount -t proc none /mnt/gentoo/proc
user # chroot /mnt/gentoo /bin/bash

wechseln in das entpackte Abbild auf der neuen Festplatte – und zwar so, als sei davon gebootet worden. Das ermöglicht der Befehl Chroot (“Change Root”). In /proc liegen etliche Systeminformationen, die Grub benötigt. Daher ist es notwendig, dieses Verzeichnis vor einem Chroot zu mounten.

Nach dem Aufruf von grub innerhalb der Chroot-Umgebung befinden Sie sich wieder auf einer Eingabeaufforderung:

livecd # grub
grub> root (hd0,0)
grub> setup (hd0)
grub> quit

Das Kommando root zeigt dabei auf die Boot-Partition, im Beispiel mit (hd0,0) auf die erste Partition der ersten Festplatte im Rechner. Dies wäre auch das passende Kommando, falls es bei Ihrer Installation keine eigene Boot-Partition existiert, sondern /boot direkt in der Root-Partition residiert. Bei einem Recovery auf die zweite Festplatte müsste der Befehl dagegen root (hd1,0) lauten. Mit dem Kommando setup schreiben Sie den Bootmanager in den MBR der Festplatte; meist soll er auf (hd0) landen, also auf der ersten Harddisk im System.

Neustart

Vor einem Neustart aus der Live-CD heraus ins “neue alte” Linux hängen Sie alle gemounteten Partitionen mit umount aus dem System aus. Die Swap-Partition deaktivieren Sie dabei mit swapoff /dev/hda2 aus. Nun schicken Sie den Rechner nur noch in den Reboot, lehnen sich zurück und sehen ihrer restaurierten Installation beim Hochfahren zu.

Glossar

Tarball

“Teerkugel”, gebräuchliche Bezeichnung für eine mit Tar erstellte und optional komprimierte Archivdatei (Dateiendung .tar, .tar.gz, .tgz, .tar.bz2 oder .tbz).

Zylinder

Übereinander liegenden Spuren einer Festplatte, auf die ohne Repositionierung der Schreib/Leseköpfe zugegriffen werden kann. Eine Festplatte mit vier Magnetscheiben (“Platter”) hat Zylinder aus acht Spuren (je Platter Vorder- und Rückseite).

Journaling-Dateisysteme

Dateisysteme, die in einem Journal über gerade geänderte Daten Buch führen. Dabei behalten die zu ändernden Daten Gültigkeit, bis der Schreibvorgang beendet ist. So lässt sich auch nach Abstürzen schnell ein konsistenter Plattenzustand wieder herstellen. Ein Full-Journaling (Ext3 im journal-Modus) garantiert auch die Konsistenz der Datei-Inhalte, ein Meta-Journaling (Ext3, ReiserFS) lediglich das der Systemeinträge.

MBR

Der ersten Datenblock (512 Byte) eines in Partitionen aufgeteilten, bootfähigen Speichermediums. Er enthält eine Partitionstabelle und den Boot-Loader.

Infos

[1] K3b-Workshop: Marcel Hilzinger, “Dauerbrenner”, LinuxUser 05/2006, S. 66

[2] Knoppix: http://www.knoppix.org

[3] Gentoo Linux: http://www.gentoo.org/main/en/mirrors.xml

[4] Grml-Homepage: http://www.grml.org

[5] Grml-Heft-CD: Michael Prokop, “Solide Werkbank”, LinuxUser 06/2006, S. 8

[6] Gentoo Linux Handbuch: http://www.gentoo.org/doc/de/handbook/handbook-x86.xml?part=1&chap=4

LinuxUser 07/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben