Як швидко скопіювати схему розділів GPT з одного жорсткого диска на інший?


79

У таблиці розділів, які не є GPT, я можу зробити

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

Але sfdiskне підтримує таблиці розділів GPT. Що я можу використовувати замість цього?

Я шукаю одне або два командні рішення, а не просто використовувати розділений GNU для виведення розмірів розділів, а потім вручну робити їх знову.


2
Інструменти розділення util-linux (у тому числі sfdisk) були переписані для включення підтримки GPT для util-linux 2.26. sfdiskВін відрізняється gdiskтим, що він не підтримує розміщення невеликого завантажувального розділу перед 1MiB, тому він захлинувся в моїй конфігурації. (Про помилку вже повідомлялося вище.)
Пітер Кордес

Коли я клоную диск MBR на менший диск, на додаток до sfdisk -d я також редагую дамп і змінюю сектори початку / кінця. Як це зробити за допомогою sgdisk для GPT-дисків? -R клонує без посередницького резервного копіювання і -b створює бінарну резервну копію, не читану / редаговану людиною, як sfdisk!
Костін Гуша

оновлення з цього приводу: sfdisk тепер приймає все, що ви надаєте, використовуючи цей спосіб, включаючи невеликий завантажувальний розділ після GPT, який закінчується на рівні 1 МБ. unix.stackexchange.com/a/12988/79808
Пітер Кордес

Як щодо dd if=/dev/sda of=/dev/sdb?
молодшийРубіїст

Відповіді:


122

Встановіть gdisk, який доступний у сховищах Ubuntu Universe.

Потім скористайтеся sgdiskкомандою ( довідкова сторінка тут ) для копіювання таблиці розділів:

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

Перша команда копіює таблицю розділів sdXдо sdY(будьте обережні, щоб їх не змішати). Друга команда рандомізує GUID на диску та всіх розділах. Це необхідно лише в тому випадку, якщо диски потрібно використовувати в одній машині, інакше це зайве.


9
Ця інформація є золотим для всіх, хто хоче замінити невдалий диск RAID-1. Дякую!
Крістіан

@Christian Yep, саме для цього я і використовував.
Кріс Харпер

9
Перш ніж вносити деструктивні зміни, не забудьте взяти резервну копію: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXтаsgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Майкл Кропат

11
Ця команда працює, але слід зазначити, що в прикладі впорядкування диска є зворотним. Більш очевидний спосіб написати цеsgdisk /dev/sdX -R /dev/sdY
Джеффрі

2
@KrisHarper: Дійсно, це так, але оскільки програма використовує getopt для розбору аргументів командного рядка, впорядкування не має значення присідання. Сторінку чоловіка слід оновити.
Джеффрі

28

Я спробував, і мені це не вийшло. Я знайшов рішення:

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

Я знайшов це рішення краще, оскільки воно може працювати з не GPT. Я також змінюю останню команду на: sgdisk -g / dev / sdb
Локк

1
Сказане дійсно працює, вам потрібно звернути увагу на те, що приклад трохи відсталий (хоча правильний). sgdisk /dev/sdX -R /dev/sdYє більш очевидним.
Джеффрі

5
Спочатку резервне копіювання, потім відновлення. Я вважаю, що це більш інтуїтивно зрозуміло і менше шансів змішати накопичувачі.
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

де A:

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

1
Це також клонує всі диски та розділи GUID, які можуть бути не такими, якими ви хочете. Крім того, він не встановлює резервну таблицю в кінці диска.
goertzenator

Мені це подобається! але вважайте за краще писати: sed '$s/:.*//p;d'натомість tail -n1 | cut -b1це не вдасться, якщо у вас більше 9-ти розділів!
Ф. Хаурі

1
@goertzenator Ви маєте рацію, для цього ви можете запустити звичайний parted інструмент, зробити щось (наприклад, встановити будь-який невідомий прапор no), це перезапише таблицю розділів з обох кінців!
Ф. Хаурі

Ви ніколи не використовували Bу верхній частині?
Аарон Франке

B - значення, яке використовується для визначення А.
додексаедр

2

Я просто спробував реплікацію за допомогою sgdisk, і вона працює чудово - потрібно просто дотримуватися правил синтаксису для читання:

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

або

   sgdisk -R/dev/target /dev/source

і все працює.


3
Це саме те, що говорить моя відповідь.
Кріс Харпер

-1

Найпростіша відповідь на це:

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

скопіювати конфігурацію таблиці хороших розділів A на привід B (який є новим накопичувачем).


Ви пропустили частину запитання, яка пояснює, чому це не варіант.
DavidW

2
Ваша відповідь не працює для GPT лише для не-GPT
Jan Dev

На поточній версії sfdiskце дійсно працює.
Герт ван ден Берг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.