Comment copier rapidement un schéma de partition GPT d'un disque dur à un autre?

79

Sur une table de partition non GPT, je peux le faire

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

Mais sfdiskne supporte pas les tables de partition GPT. Que puis-je utiliser à la place?

Je cherche une solution à une ou deux commandes, pas seulement en utilisant GNU Parted pour afficher les tailles de partition, puis en les redéfinissant manuellement.

Kris Harper
la source
2
Les outils de partitionnement util-linux (y compris sfdisk) ont été réécrits pour inclure le support GPT pour util-linux 2.26. sfdiskdiffère de gdiskpar le fait qu’il ne supporte pas la mise en place d’une petite partition de démarrage avant 1MiB, donc il s’est étouffé dans ma configuration. (bug signalé en amont déjà.)
Peter Cordes
Lorsque je clone un disque MBR sur un disque plus petit, en plus de sfdisk -d, je modifie également le vidage et modifie les secteurs de début et de fin. Comment puis-je faire cela avec sgdisk pour les disques GPT? -R clone sans fichier de sauvegarde intermédiaire et -b crée une sauvegarde binaire, non lisible / éditable par l'homme comme le fait sfdisk!
Costin
Mettez à jour à ce sujet: sfdisk accepte maintenant tout ce que vous lui donnez, y compris une petite partition de démarrage suivant le GPT, se terminant à 1 Mo. unix.stackexchange.com/a/12988/79808
Peter Cordes
Que diriez- dd if=/dev/sda of=/dev/sdbvous
juniorRubyist

Réponses:

122

Installez gdisk, disponible dans les référentiels d’Univers Ubuntu.

Ensuite, utilisez la sgdiskcommande ( page de manuel ici ) pour répliquer la table de partition:

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

La première commande copie la table de partition de sdXto sdY(veillez à ne pas les mélanger). La deuxième commande randomise le GUID sur le disque et toutes les partitions. Cela n'est nécessaire que si les disques doivent être utilisés sur le même ordinateur, sinon c'est inutile.

Kris Harper
la source
9
Cette information est idéale pour quiconque souhaite remplacer un disque RAID-1 défaillant. Merci!
Christian
@ Christian Yep, c'est pour ça que je l'ai utilisé.
Kris Harper
9
Avant toute modification destructive, assurez-vous de faire une copie de sauvegarde avec: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXetsgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat
11
Cette commande fonctionne, mais il convient de noter que l'ordre du lecteur est inversé dans l'exemple. Une façon plus évidente d'écrire ceci estsgdisk /dev/sdX -R /dev/sdY
Geoffrey
2
@KrisHarper: En effet, mais puisque le programme utilise getopt pour analyser les arguments de la ligne de commande, l'ordre n'a pas d'importance. La page de manuel devrait être mise à jour.
Geoffrey
28

J'ai essayé et cela n'a pas fonctionné pour moi. La solution que j'ai trouvée est:

sgdisk --backup=table /dev/sda
sgdisk --load-backup=table /dev/sdb
sgdisk -G /dev/sdb
Serafin Rusu
la source
J'ai trouvé cette solution meilleure, car elle peut fonctionner avec des technologies non GPT. Je change également la dernière commande en: sgdisk -g / dev / sdb
Locke
1
Ce qui précède fonctionne, vous devez faire attention au fait que l'exemple est un peu en arrière (bien que correct). sgdisk /dev/sdX -R /dev/sdYest plus évident.
Geoffrey
5
Première sauvegarde, puis restaurer. Je trouve cela plus intuitif et moins de chance de mélanger les disques.
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

où A est:

A=(128*B)+1024
B=parted -ms /dev/sda print |tail -1|cut -b1
Petroff
la source
1
Cela permet également de cloner tous les GUID de disque et de partition, ce qui peut ne pas correspondre à vos souhaits. En outre, il n'installe pas la table de sauvegarde à la fin du disque.
Goertzenator
J'aime cette façon! mais préférez écrire: à la sed '$s/:.*//p;d'place tail -n1 | cut -b1, cela échouera si vous avez plus de 9 partitions!
F. Hauri
1
@goertzenator Vous avez raison, pour cela, vous pouvez utiliser un parted outil normal , faire quelque chose (comme définir un indicateur non défini sur no), cela réécrira la table de partition aux deux extrémités!
F. Hauri
Tu n'as jamais utilisé Bdans la partie supérieure?
Aaron Franke
B est une valeur utilisée pour déterminer A.
dodexaèdre
2

Je viens d'essayer la réplication avec sgdisk et cela fonctionne très bien - il suffit de suivre les règles de syntaxe readline:

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

ou

   sgdisk -R/dev/target /dev/source

et tout fonctionne.

al3xxx
la source
3
C'est exactement ce que ma réponse dit.
Kris Harper
-1

La réponse la plus simple à cette question est la suivante:

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

copier la «bonne» configuration de table de partition de A sur le lecteur de remplacement B (qui est le nouveau lecteur).

Tony Doyle
la source
Vous avez manqué la partie de la question qui explique pourquoi ce n'est pas une option.
DavidW
2
Votre réponse ne fonctionne pas pour GPT uniquement pour les non-GPT
Jan Dev
Sur la version actuelle de sfdiskcela fonctionne.
Gert van den Berg