Was ist der beste Weg, eine Linux-Partition auf eine kleinere Partition zu klonen?

6271
thecoop

Ich habe derzeit ein 80-GB- RAID-0-Laufwerk (ja, ich weiß, deshalb ändere ich es ...). Das ext3- Linux-Gerät ist zu 80% frei, und ich möchte es in eine 40-GB- ext4- Partition mit einer ändern der vorherigen RAID 0-Partitionen. Ich habe auf einer anderen großen Partition genügend freien Speicherplatz für alle Dateien zur Verfügung. Die beste Methode, die ich mir überlegt habe, ist:

  1. cp -a Alle Dateien im Dateisystem in ein Verzeichnis unter einer großen Partition
  2. Repartition
  3. cp -a alle Dateien auf eine neue Partition zurück

Die Sache ist, ich mache mir Sorgen um spezielle Dateieigenschaften (es ist ein Linux-Root-Gerät); wird cp -ahalten alle die notwendigen Datei - Eigenschaften, so dass die neue Partition danach bootfähig ist? Verpasse ich eine andere Möglichkeit, es zu tun?

2

2 Antworten auf die Frage

6
David Spillett

Ich würde:

  1. Ändern Sie die Größe des Dateisystems vor Ort mit etwas Ähnlichem. resize2fs -p /dev/<device_name_fs_is_on> 20G
    Es wird sich zweifellos weigern, das erste Mal auszuführen, und schlägt daher vor, dass Sie es fsckzuerst ausführen . Sie können die Ausführung erzwingen, aber der fsckVorgang wird dringend empfohlen, da der Versuch, ein Dateisystem mit Fehlern (sogar geringfügigen) zu ändern, zu einem Desaster führen kann. Führen Sie den Befehl zur Größenänderung erneut aus, sobald die Überprüfung abgeschlossen ist
  2. Kopieren Sie es mit auf das andere Laufwerk dd if=/dev/<device_name_fs_is_on> of=/path/to/other/location/filesystem.img bs=1048576 count=20480
  3. formatieren Sie die Festplatten nach Bedarf neu
  4. kopiere das Dateisystem mit dd if=/path/to/other/location/filesystem.img of=/dev/<new_device_name>
  5. verkleinern Sie die Größe der neuen Partition mit resize2fs -p /dev/<new_device_name>
  6. Mounten Sie das neu skalierte Dateisystem und bearbeiten Sie alle relevanten Konfigurationen, wie / etc / fstab
  7. Sie müssen auch Ihre Grub-Konfiguration überprüfen, um sicherzustellen, dass sie sich auf den neuen Namen der Root-Partition bezieht, und Sie müssen möglicherweise Ihre initrd neu erstellen Initrd ist nicht RAID-fähig)
  8. Daumen drücken und neu starten ...

Da dies Ihr Root-Dateisystem ist, müssen Sie dies von einer Live-CD aus tun, da das Dateisystem während des Ladevorgangs nicht skalierbar ist (Schritt 2).

Wenn Sie die resize2fsin Schritt 1 übergebenen 20G ändern, stellen Sie sicher, dass Sie die ddin Schritt 2 übergebene 1048576x20480 entsprechend ändern .

Offensichtlich ist dies kein risikofreier Vorgang.
Daher möchten Sie vor Schritt 3 wichtige Daten und Konfigurationen auf andere Weise auf dem Dateisystem separat sichern. Für noch mehr Sicherheit: Wenn Sie Zeit und eine Festplatte zur Verfügung haben, stellen Sie das geschrumpfte Dateisystem wieder her Nehmen Sie die zusätzliche Festplatte vor, und konfigurieren Sie sie entsprechend den Schritten 6 und 7 entsprechend neu. Stellen Sie sicher, dass Sie diese starten können, bevor Sie mit Schritt 3 fortfahren. Auf diese Weise wissen Sie, dass Sie eine voll funktionsfähige Kopie des Dateisystems haben, bevor Sie es vom alten Speicherort löschen kann problemlos auf das alte Setup zurückgreifen und abbrechen / erneut versuchen, wenn Sie in diesem Stadium Probleme feststellen.

Auf diese Weise verlieren Sie keine Datei- / Verzeichnis- / Geräteeigenschaften, während Sie Dateien kopieren, während Sie auf dem Dateisystem statt auf einzelnen Dateien, Verzeichnissen und Geräteknoten arbeiten.

Die Verwendung von pv anstelle von dd kann zu Fortschritten beim Festplattenklonen führen. Wie bei dd würde der Benutzer den Fortschritt bis zum Ende des Prozesses oder einen Fehler nicht sehen. pbies vor 11 Jahren 0
@pbies Sie können Fortschritt mit dd sehen. Die Methode öffnet eine neue Shell und sucht die dd-pid: `pgrep -l '^ dd $'` dann gibt eine watch und kill für die pid aus: 'watch -n 10 kill -USR1 8789` Dies gibt den Fortschritt von dd alle 10 aus Sekunden. Verdi Erel Ergün vor 10 Jahren 0
Normalerweise verwende ich selbst "pv" für den Fortschrittsindikator, aber ich halte mich an "dd" und "cat", wenn Beispiele öffentlich angegeben werden, da sie fast überall zu finden sind, und "pv", während es in Linux-Distributionen zunehmend standardmäßig verfügbar ist Normal bei Standardinstallationen. David Spillett vor 10 Jahren 0
1
Neal

Ich habe es nie benutzt, aber es gibt ein Partitionsabbildungsprogramm, partimagedas auf der System Rescue-CD verfügbar ist .

Ich bin nicht sicher, was passiert, wenn Sie partimage verwenden, aber wenn Sie cp verwenden (achten Sie darauf, nicht das Verzeichnis zu kopieren, in das Sie kopieren, wenn Sie es kopieren), müssen cp -axSie Grub neu installieren hard codes physische Festplattenpositionen, die sich während des Kopiervorgangs ändern.

Beide Male habe ich System Rescue CD verwendet und das Teileabbild funktionierte gut. Das Part-Image kann jedoch nur auf einer Partition mit derselben Größe oder größer wiederhergestellt werden. Rodney Schuler vor 15 Jahren 0
Verkleinern, bevor das Bild aufgenommen wird? Aber dann denke ich, dass es eine Neufassung geben muss, was ewig dauern wird und den Vorteil verliert (Teilbild kopiert keine leeren Blöcke - 80% Ihres Laufwerks), das Teilbild über dd hat. Neal vor 15 Jahren 0