tar kopiert ganze Partitionen

Aus LinuxUser 09/2002

tar kopiert ganze Partitionen

Mit Linux umziehen

Ist die Festplatte bis zum Rand gefüllt, hilft meist nur der Einbau einer Zweitplatte. Wie Sie mit Ihren Linux-Partitionen auf die neue Platte umziehen, zeigt dieser Artikel.

Auf vielen Rechnern ist neben Linux zusätzlich eine Windows-Variante installiert. Dadurch steht Linux nur ein Teil der Plattenkapazität zur Verfügung – oft gibt es auf der Windows-Partition aber noch ausreichend freien Platz. In einer solchen Situation bietet es sich an, der Windows-Partition ein Stück wegzunehmen, um es der Linux-Partition hinzuzufügen.

NTFS-Partitionen (wie sie von Windows NT, 2000 und XP verwendet werden) lassen sich nur mit einem kommerziellen Programm wie Partition Magic (siehe Abbildung 1) in der Größe verändern.

Abbildung 1: Partition Magic im Einsatz

Abbildung 1: Partition Magic im Einsatz

Wenn auch die Verkleinerung bestehender Windows-Partitionen nicht ausreichend freien Platz schafft, bleibt nur der Einbau einer neuen Platte. Um nun nicht das System willkürlich auf die zwei Platten zu verteilen, ist ein kompletter Umzug auf die (in der Regel größere) neue Festplatte möglich.

Neue Scheiben

Soll das Linux-System auf eine andere Partition umziehen, müssen Sie ein wenig in die Trickkiste greifen. Wir gehen hier von einer Konfiguration aus, bei der Sie eine Boot-Diskette zum Linux-Start verwenden; über diesen Umweg lässt sich (nach erfolgreichem Umzug) natürlich auch der Boot-Manager auf der Platte neu einrichten.

Eine Boot-Diskette können sich durch einen Vierzeiler der folgenden Form erstellen:

/sbin/badblocks -v /dev/fd0 1440
dd if=/boot/vmlinuz of=/dev/fd0 bs=18k
rdev /dev/fd0 hda1
rdev -R /dev/fd0 1

Wichtig ist für unsere Betrachtung dabei das dritte Kommando rdev, mit dem auf der Boot-Diskette vermerkt wurde, auf welcher Partition das Wurzelverzeichnis Ihres Linux-Systems steht. Wenn Sie das nicht wissen, rufen Sie rdev ohne Parameter auf – die Partitionsbezeichnung wird dann angezeigt:

[root@dual /]# rdev
/dev/hda5 /

Alternativ können Sie auch die Datei /etc/fstab nach dem Eintrag für das Verzeichnis / durchsuchen. Wenn Sie nun für den zukünftigen Speicherort des Systems auf einer anderen Festplatte oder Partition genügend Platz zur Verfügung gestellt haben, müssen Sie diese freie Partition in Ihren Dateibaum einhängen. Nehmen wir einmal an, es ist die erste Partition auf der Master-Festplatte am zweiten IDE-Controller, also hdc1. Dann müssen Sie zuerst Ihre Zielpartition formatieren (z. B. mit mkreiserfs /dev/hdc1) und dann einen Eintrag in der Datei /etc/fstab vornehmen – als Mount-Punkt verwenden Sie das Verzeichnis /ziel.

/dev/hda1 /     ext2 defaults 1 1
/dev/hda2 swap  swap defaults 0 0
/dev/hdc1 /ziel reiserfs defaults 1 1

Mit mount /ziel binden Sie die neue Partition in die Verzeichnishierarchie ein. Nun fehlt noch eine Boot-Diskette, die von der neuen Partition bootet. Diese erstellen Sie genauso wie eine Boot-Diskette für das bisherige Linux-System, lediglich bei der ersten rdev-Anweisung müssen Sie nun die Partitionsbezeichnung der Zielpartition angeben – in diesem Beispiel also rdev /dev/fd0 hdc1 .

Das Umzugsunternehmen

Nun haben Sie bereits Zielpartition und Boot-Diskette, jetzt müssen Sie noch die Daten kopieren. Hierfür verwenden Sie eine doppelte tar-Anweisung, die die Quelldaten einpackt, in das Zielverzeichnis wechselt und sie dort wieder auspackt. Das Kommando lautet

tar cpf - quell_verzeichnis | (cd ziel_verzeichnis ; tar xpf - )

Es wäre nun aber keine gute Idee, das gesamte Root-Verzeichnis / rekursiv zu kopieren, denn dabei würden unter anderem auch die Dateien im virtuellen Prozessdateisystem /proc mitkopiert – was keine gute Idee ist, da spätestens das virtuelle Speicherabbild /proc/kcore zu ziemlicher Platzverschwendung führen wird. Auch wollen Sie nicht den Inhalt eventuell eingebundener anderer Partitionen oder CDs, DVDs und Disketten kopieren. Zum Glück besitzt tar die Option -l, über die Sie erzwingen können, dass nur Daten des aktuellen Dateisystems kopiert werden: Alle Unterverzeichnisse, auf die ein anderes Dateisystem gemountet ist, werden damit ausgeschlossen.

Der richtige Befehl zum Kopieren der gesamten Root-Partition lautet dann:

tar clpf - / | (cd /ziel ; tar xpf - )

Bäumchen wechsle Dich

Nachdem Sie Ihre Daten auf die Zielpartition gebracht haben, müssen Sie noch die Datei /ziel/etc/fstab so anpassen, dass das kopierte Linux-System beim Start auch weiß, wo sein (neues) Wurzelverzeichnis ist. Dazu editieren Sie die Datei /ziel/etc/fstab und ändern den Namen des Wurzelverzeichnisses / in /quelle und den Verzeichnisnamen /ziel in /:

/dev/hda1 /quelle ext2 defaults 1 1
/dev/hda2 swap    swap defaults 0 0
/dev/hdc1 /   reiserfs defaults 1 1

Damit sind Sie im Grunde fertig. Jetzt brauchen Sie nur noch die neue Boot-Diskette einzulegen und den Rechner neu zu starten. Die Situationen vor und nach dem Reboot verdeutlichen die Abbildungen 2 und 3.

Abbildung 2: System vor dem Reboot

Abbildung 2: System vor dem Reboot

Abbildung 3: System nach dem Reboot

Abbildung 3: System nach dem Reboot

Fazit

Eine Linux-Installation wie hier beschrieben zu kopieren, ist vielleicht nicht die eleganteste Lösung, aber es verdeutlicht einige Zusammenhänge zwischen Datenträgern, Partitionsbezeichnungen und der Boot-Diskette. Ein klarer Vorteil dieser Vorgehensweise ist, dass Ihr ursprüngliches Linux-System lauffähig bleibt und Sie problemlos das kopierte System testen können. Wenn etwas nicht funktioniert, fangen Sie einfach von vorne an. Auf jeden Fall können Sie aber über die alte Boot-Diskette jederzeit das Ursprungssystem starten. Der Weg ist also fast katastrophensicher.

LinuxUser 09/2002 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