Wie kann ich ein GPT-Partitionsschema schnell von einer Festplatte auf eine andere kopieren?


79

Auf einer Nicht-GPT-Partitionstabelle kann ich das tun

sfdisk -d /dev/sda | sfdisk /dev/sdb.

Aber sfdiskkeine Unterstützung für GPT - Partitionstabellen. Was kann ich stattdessen verwenden?

Ich suche nach einer Lösung mit ein oder zwei Befehlen, nicht nur mit GNU Parted, um die Partitionsgrößen auszugeben und sie dann manuell erneut zu erstellen.


2
Die Util-Linux-Partitionierungs-Tools (einschließlich sfdisk) wurden umgeschrieben, um die GPT-Unterstützung für Util-Linux 2.26 einzuschließen. sfdiskunterscheidet sich gdiskdarin, dass es nicht unterstützt, eine kleine Boot-Partition vor 1 MB zu setzen, so dass es an meiner Konfiguration erstickt ist. (Ein Fehler wurde bereits im Upstream gemeldet.)
Peter Cordes

Wenn ich eine MBR-Festplatte auf eine kleinere Festplatte klone, bearbeite ich neben sfdisk -d auch den Dump und ändere Start- / Endsektoren. Wie mache ich das mit sgdisk für GPT-Festplatten? -R klont ohne Zwischensicherungsdatei und -b erstellt eine Binärsicherung, die nicht von Menschen gelesen / bearbeitet werden kann, wie dies bei sfdisk der Fall ist!
Costin Gușă

Update zu diesem Thema: sfdisk akzeptiert jetzt alle Angaben, die Sie auf diese Weise machen, einschließlich einer kleinen Startpartition nach dem GPT, die bei 1 MB endet. unix.stackexchange.com/a/12988/79808
Peter Cordes

Wie wäre es dd if=/dev/sda of=/dev/sdb?
juniorRubyist

Antworten:


122

Installieren Sie die im Ubuntu Universe-Repository verfügbare gdisk .

Verwenden Sie dann den sgdiskBefehl ( Manpage hier ), um die Partitionstabelle zu replizieren:

sgdisk /dev/sdX -R /dev/sdY 
sgdisk -G /dev/sdY

Der erste Befehl kopiert die Partitionstabelle von sdXto sdY(achten Sie darauf, diese nicht zu verwechseln). Der zweite Befehl sortiert die GUID auf der Festplatte und allen Partitionen nach dem Zufallsprinzip. Dies ist nur erforderlich, wenn die Datenträger auf demselben Computer verwendet werden sollen, andernfalls ist dies nicht erforderlich.


9
Diese Informationen sind ideal für alle, die eine ausgefallene RAID-1-Festplatte ersetzen möchten. Vielen Dank!
Christian

@ Christian Yep, dafür habe ich es benutzt.
Kris Harper

9
Bevor Sie zerstörerische Änderungen vornehmen, machen Sie unbedingt eine Sicherungskopie mit: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXundsgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat,

11
Dieser Befehl funktioniert, es ist jedoch zu beachten, dass die Laufwerksreihenfolge im Beispiel umgekehrt ist. Ein offensichtlicherer Weg, dies zu schreiben, istsgdisk /dev/sdX -R /dev/sdY
Geoffrey

2
@KrisHarper: In der Tat, aber da das Programm getopt verwendet, um die Befehlszeilenargumente zu analysieren, spielt die Reihenfolge keine Rolle. Die Manpage sollte aktualisiert werden.
Geoffrey

28

Ich habe es versucht und es hat bei mir nicht funktioniert. Die Lösung, die ich gefunden habe, ist:

sgdisk --backup=table /dev/sda
sgdisk --load-backup=table /dev/sdb
sgdisk -G /dev/sdb

Ich fand diese Lösung besser, weil es mit Nicht-GPT arbeiten kann. Ich ändere auch den letzten Befehl in: sgdisk -g / dev / sdb
Locke

1
Das obige funktioniert, Sie müssen darauf achten, dass das Beispiel ein wenig rückwärts ist (obwohl es korrekt ist). sgdisk /dev/sdX -R /dev/sdYist offensichtlicher.
Geoffrey

5
Erst sichern, dann wiederherstellen. Ich finde das intuitiver und weniger möglich, die Laufwerke zu verwechseln.
Csq

8
dd if=/dev/sda of=GPT_TABLE bs=1 count=A
dd if=GPT_TABLE of=/dev/sdb bs=1 count=A
partprobe /dev/sdb

wo A ist:

A=(128*B)+1024
B=parted -ms /dev/sda print |tail -1|cut -b1

1
Dies klont auch alle Festplatten- und Partitions-GUIDs, die möglicherweise nicht Ihren Wünschen entsprechen. Außerdem wird die Sicherungstabelle am Ende der Festplatte nicht installiert.
goertzenator

Ich mag diesen Weg! Aber schreibe lieber: sed '$s/:.*//p;d'Stattdessen tail -n1 | cut -b1schlägt dies fehl, wenn du mehr als 9 Partitionen hast!
F. Hauri

1
@goertzenator Du hast Recht, für das Sie ausführen können regelmäßiges parted Werkzeug, etwas zu tun (wie Set jede ungesetzt Flag no), werden diese neu zu schreiben Partitionstabelle auf beiden Seiten!
F. Hauri

Sie haben noch nie Bim oberen Bereich eingesetzt?
Aaron Franke

B ist ein Wert, der verwendet wird, um A.
Dodexaeder

2

Ich habe gerade versucht, mit sgdisk zu replizieren, und es funktioniert einwandfrei - Sie müssen lediglich die Regeln für die readline-Syntax befolgen:

   sgdisk --replicate=/dev/target /dev/source

oder

   sgdisk -R/dev/target /dev/source

und alles funktioniert.


3
Genau das sagt meine Antwort.
Kris Harper

-1

Die einfachste Antwort darauf ist:

sudo sfdisk -d /dev/sda | sudo  sfdisk /dev/sdb --force

Kopieren der Konfiguration der 'guten' Partitionstabelle von A auf das Ersatzlaufwerk B (welches das neue Laufwerk ist).


Sie haben den Teil in der Frage verpasst, der erklärt, warum dies keine Option ist.
DavidW

2
Ihre Antwort funktioniert nicht für GPT nur für Nicht-GPT
Jan Dev

Auf der aktuellen Version sfdiskfunktioniert dies nicht.
Gert van den Berg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.