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.