Jak mogę szybko skopiować schemat partycji GPT z jednego dysku twardego na inny?


79

Na tabeli partycji innej niż GPT mogę to zrobić

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

Ale sfdisknie obsługuje tablic partycji GPT. Czego mogę zamiast tego użyć?

Szukam rozwiązania z jedną lub dwiema komendami, nie tylko przy użyciu GNU parted do wyświetlania rozmiarów partycji, a następnie ręcznego tworzenia ich ponownie.


2
Narzędzia do partycjonowania util-linux (w tym sfdisk) zostały przepisane i zawierają obsługę GPT dla util-linux 2.26. sfdiskróżni się gdisktym, że nie obsługuje wstawiania małej partycji rozruchowej przed 1MiB, więc dusił się w mojej konfiguracji. (błąd został już zgłoszony wcześniej).
— Peter Cordes

Kiedy klonuję dysk MBR na mniejszy dysk, oprócz sfdisk -d edytuję zrzut i modyfikuję sektory początkowe / końcowe. Jak to zrobić za pomocą sgdisk dla dysków GPT? -R klonuje bez pośredniego pliku kopii zapasowej i -b tworzy kopię binarną, nie do odczytu / edycji przez człowieka jak robi to sfdisk!
— Costin Gușă

zaktualizuj to: sfdisk akceptuje teraz wszystko, co dasz, gdy jest używany w ten sposób, w tym małą partycję rozruchową po GPT, kończącą się na 1 MB. unix.stackexchange.com/a/12988/79808
— Peter Cordes

Jak o dd if=/dev/sda of=/dev/sdb?
— juniorRubyist

Odpowiedzi:


122

Zainstaluj gdisk, który jest dostępny w repozytoriach Ubuntu Universe.

Następnie użyj sgdiskpolecenia ( tutaj strona man ), aby zreplikować tablicę partycji:

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

Pierwsze polecenie kopiuje tablicę partycji sdXdo sdY(uważaj, aby ich nie pomieszać). Drugie polecenie losowo GUID na dysku i wszystkich partycjach. Jest to konieczne tylko wtedy, gdy dyski mają być używane na tym samym komputerze, w przeciwnym razie nie jest to konieczne.


9
Te informacje są złote dla każdego, kto chce wymienić uszkodzony dysk RAID-1. Dzięki!
— Christian

@Christian Yep, właśnie do tego użyłem.
— Kris Harper

9
Przed dokonaniem jakichkolwiek destrukcyjnych zmian koniecznie wykonaj kopię zapasową za pomocą: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXisgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
— Michaela Kropata

11
To polecenie działa, ale należy zauważyć, że w tym przykładzie kolejność dysków jest odwrotna. Bardziej oczywistym sposobem na napisanie tego jestsgdisk /dev/sdX -R /dev/sdY
— Geoffrey

2
@KrisHarper: Rzeczywiście tak jest, ale ponieważ program używa getopt do analizowania argumentów wiersza poleceń, kolejność nie ma znaczenia. Strona podręcznika powinna zostać zaktualizowana.
— Geoffrey,

28

Próbowałem i to nie działało dla mnie. Znalazłem rozwiązanie:

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

Odkryłem, że to rozwiązanie jest lepsze, ponieważ może współpracować z non-GPT. Zmieniam również ostatnie polecenie na: sgdisk -g / dev / sdb
— Locke

1
Powyższe działa, należy zwrócić uwagę na fakt, że przykład jest nieco wstecz (choć poprawny). sgdisk /dev/sdX -R /dev/sdYjest bardziej oczywiste.
— Geoffrey,

5
Najpierw wykonaj kopię zapasową, a następnie przywróć. Uważam, że jest to bardziej intuicyjne i mniej szansa na pomieszanie dysków.
— 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

gdzie A jest:

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

1
Spowoduje to również klonowanie wszystkich identyfikatorów GUID dysków i partycji, które mogą nie być odpowiednie. Ponadto nie instaluje tabeli kopii zapasowych na końcu dysku.
— goertzenator,

Lubię to! ale wolę pisać: sed '$s/:.*//p;d'zamiast tail -n1 | cut -b1tego nie powiedzie się, jeśli masz więcej niż 9 partycji!
— F. Hauri

1
@goertzenator Masz rację, w tym celu możesz uruchomić zwykłe parted narzędzie, zrobić coś (na przykład ustawić dowolną flagę unset na no), spowoduje to ponowne zapisanie tablicy partycji na obu końcach!
— F. Hauri

Nigdy nie używałeś Bw górnej części?
— Aaron Franke,

B jest wartością używaną do
— ustalenia

2

Właśnie próbowałem replikacji z sgdisk i działa dobrze - wystarczy przestrzegać reguł składni readline:

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

lub

   sgdisk -R/dev/target /dev/source

i wszystko działa.


3
Tak właśnie mówi moja odpowiedź.
— Kris Harper

-1

Najprostsza odpowiedź na to:

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

aby skopiować „dobrą” konfigurację tablicy partycji A na dysk zastępczy B (który jest nowym dyskiem).


Pominąłeś część pytania, która wyjaśnia, dlaczego nie jest to opcja.
— DavidW

2
Twoja odpowiedź nie działa w przypadku GPT tylko w trybie innym niż GPT
— Jan Dev

W obecnej wersji sfdiskto działa.
— Gert van den Berg,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.