Kopie der root Partition
Inhaltsverzeichnis
1:1 Kopie der Root Partition
- Anmerkungen
Gelegendlich ist es notwendig eine Kopie eines Filesystems zu erstellen. Die Gründe hierfür können vielfältig sein. Bei einer solche Kopie dürfen aber nicht nur die Dateien und Verzeichnisse kopiert werden, auch die Besitzverhältnisse, die Zugriffsrechte und die wichtigsten Zeitstempel müssen mit kopiert werden. Desweiteren gibt es vor allem im Root Filesystem Gerätedateien Hard- und Softlinks die bei einer Kopie richtig mit übernommen werden müssen.
Partition lokal mit tar kopieren
Dabei wird aus dem Filesystem mittels tar ein Archiv erstellt, dieses Archiv wird sofort mittels einer Pipe an einen 2. tap-Prozess übergeben, der das Auspacken in die Zielpartition vornimmt.
Vorbereitungen
- Zielpartition aussuchen (muss größ genug sein um alle Datein aufnehmen zu können)
- Zielpartition darf keine Dateien enthalten, gegebenenfalls das Filesystem dort neu anlegen
- gegebenenfalls das jetzt leere Filesystem temporär mounten
Um eine exakte 1:1 Kopie(inkl. Softlinks) der Root Partition, auf einer anderen Partition zu erzeugen, kann man folgenden Befehl nutzen.
# cd /;tar cfpl - --atime-preserve . | ( cd /Zielpfad; tar xfp - --atime-preserve )
- Anmerkungen
- "/Zielpfad" = Mountpoint der Zielpartition
detailierte Erklärung am Beispiel
- 2 IDE Festplatten(hda, hdb)
- Rootpartition aktuell 1.Partition der 2.Festplatte also hdb1.
- Rootpartition geplant 1.Partition der 1.Festplatte also hda1.
- Ein möglicher Grund hierfür wäre z.B. das hda eine ATA133er Festplatte ist, hdb hingegen nur eine ATA100er.
- Wir gehen davon aus das hda1 und wenigstens so gross ist, wie das Rootdateisystem an Plattenplatz belegt.
- Ein Filesystem haben wir auf hda1 neu erstellt, (selbe Filesytemtype wie hdb1)
- Da wir nicht mit dd arbeiten kann die Größe der Zielpartition(hda1) von der Quellpartition(hdb1) abweichen!
Wir wechseln zum Benutzer Root
[me@localhost me]$ su - Password:
Nun wechseln wir in das Hauptverzeichnis
[root@localhost me]# cd /
Jetzt erstellen wir einen Ordner für die Zielpartition
[root@localhost /]# mkdir ziel
Und mounten die Zielpartition in den eben erstellten Ordner
[root@localhost /]# mount /dev/hda1 /ziel
Damit sind alle Vorarbeiten erledigt - wir können nun mit dem Kopiervorgang beginnen.
[root@localhost /]# tar cfpl - --atime-preserve . | ( cd /ziel; tar xfp - --atime-preserve )
Ab jetzt heißt es abwarten und Tee trinken oder evtl. auch CPU-Auslastung beobachten Der ganze Prozess kann eine Weile dauern - das Resultat entschädigt aber.
Nachdem die Rootpartition nun verschoben ist und wir diese gerne auch booten möchten, sind noch einige Modifikationen vorzunehmen
- Eintrag ins Bootloadermenü(Lilo/Grub)
- Editieren der Datei /etc/fstab (Eintrag für "/" ändern - /deb/hdb1 ist nun /dev/hda1)
Anmerkungen und Erweiterungen hier im Forum
- Der Befehl würde kontrolliert abbrechen wenn das /Zielverzeichnis nicht existiert,
- Nutzung von "cd /Zielverzeichnis &&" statt "cd /Zielverzeichnis ;"
cd /;tar cfpl - --atime-preserve . | ( cd /Zielverzeichnis && tar xfp - --atime-preserve )
- Bei dem Beispiel hier werden Boot Probleme auftreten, nachdem man die alte Rootpartition neu verwendet hat, da wir nach wie vor der Systemboot von dieser Partition aus initiert wird. Es muss also damit das System auch in Zukunft noch sicher bootet bevor man die alte Partition entgültig vernichtet, mit grub-install der MBR neu geschrieben werden.
weiterführende Links
erstellt aus einem LC-Howto von oc2pus