Come posso copiare rapidamente uno schema di partizione GPT da un disco rigido a un altro?


79

Su una tabella delle partizioni non GPT posso fare

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

Ma sfdisknon supporta le tabelle delle partizioni GPT. Cosa posso usare invece?

Sto cercando una soluzione a uno o due comandi, non solo usando GNU parted per produrre le dimensioni della partizione e poi ripristinarle manualmente.


2
Gli strumenti di partizionamento util-linux (incluso sfdisk) sono stati riscritti per includere il supporto GPT per util-linux 2.26. sfdiskdifferisce dal fatto gdiskche non supporta l'inserimento di una piccola partizione di avvio prima di 1 MiB, quindi ha soffocato sulla mia configurazione. (bug già segnalato a monte.)
Peter Cordes

Quando clonare un disco MBR su un disco più piccolo, oltre a sfdisk -d, modifico anche il dump e modifico i settori di inizio / fine. Come posso farlo con sgdisk per dischi GPT? -R clona senza file di backup intermedio e -b crea un backup binario, non leggibile / modificabile dall'uomo come fa sfdisk!
Costin Gușă,

aggiornamento su questo: sfdisk ora accetta tutto ciò che gli viene dato quando utilizzato in questo modo, inclusa una piccola partizione di avvio che segue il GPT, che termina a 1 MB. unix.stackexchange.com/a/12988/79808
Peter Cordes,

Che ne dici dd if=/dev/sda of=/dev/sdb?
juniorRubyist,

Risposte:


122

Installa gdisk che è disponibile nei repository di Ubuntu Universe.

Quindi utilizzare il sgdiskcomando ( pagina man qui ) per replicare la tabella delle partizioni:

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

I primi comando copia la tabella delle partizioni di sdXa sdY(attenzione a non mescolare questi in su). Il secondo comando randomizza il GUID sul disco e tutte le partizioni. Ciò è necessario solo se i dischi devono essere utilizzati nella stessa macchina, altrimenti non è necessario.


9
Questa informazione è d'oro per chiunque voglia sostituire un disco RAID-1 guasto. Grazie!
Christian,

@Christian Yep, è per questo che l'ho usato.
Kris Harper,

9
Prima di apportare modifiche distruttive, assicurati di eseguire un backup con: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXesgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat,

11
Questo comando funziona ma va notato che nell'esempio l'ordine dell'azionamento è all'indietro. Un modo più ovvio per scrivere questo èsgdisk /dev/sdX -R /dev/sdY
Geoffrey

2
@KrisHarper: Sì, ma poiché il programma utilizza getopt per analizzare gli argomenti della riga di comando, l'ordinamento non ha importanza. La pagina man dovrebbe essere aggiornata.
Geoffrey,

28

Ho provato e non ha funzionato per me. La soluzione che ho trovato è:

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

Ho trovato questa soluzione migliore, perché può funzionare con non GPT. Cambio anche l'ultimo comando a: sgdisk -g / dev / sdb
Locke

1
Quanto sopra funziona, è necessario prestare attenzione al fatto che l'esempio è un po 'indietro (anche se corretto). sgdisk /dev/sdX -R /dev/sdYè più ovvio.
Geoffrey,

5
Primo backup, quindi ripristino. Trovo che questo sia più intuitivo e meno possibilità di confondere le unità.
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

dove A è:

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

1
Questo clona anche tutti i GUID del disco e della partizione che potrebbero non essere quelli desiderati. Inoltre, non installa la tabella di backup alla fine del disco.
goertzenator,

Mi piace così! ma preferisci scrivere: sed '$s/:.*//p;d'invece tail -n1 | cut -b1non funzionerà se hai più di 9 partizioni!
F. Hauri,

1
@goertzenator Hai ragione, per questo puoi eseguire uno strumento normale parted , fare qualcosa (come impostare qualsiasi flag non impostato su no), questo riscriverà la tabella delle partizioni su entrambe le estremità!
F. Hauri,

Non hai mai usato Bnella sezione superiore?
Aaron Franke,

B è un valore usato per capire A.
dodexedro

2

Ho appena provato la replica con sgdisk e funziona bene - devi solo seguire le regole di sintassi readline:

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

o

   sgdisk -R/dev/target /dev/source

e tutto funziona.


3
Questo è esattamente ciò che dice la mia risposta.
Kris Harper,

-1

La risposta più semplice a questa è:

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

per copiare la 'buona' configurazione della tabella delle partizioni di A sull'unità sostitutiva B (che è la nuova unità).


Hai perso la parte nella domanda che spiega perché questa non è un'opzione.
DavidW,

2
La tua risposta non funziona per GPT solo per i non GPT
Jan Dev

Sulla versione corrente di sfdiskquesto funziona.
Gert van den Berg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.