GPT bölüm düzenini bir sabit sürücüden diğerine nasıl hızlıca kopyalayabilirim?


79

GPT olmayan bir bölüm tablosunda yapabilirim

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

Ancak sfdiskGPT bölümleme tablolarını desteklemiyor. Bunun yerine ne kullanabilirim?

Bir ya da iki komut çözümü arıyorum, yalnızca bölüm boyutlarını çıkarmak için bölümlenmiş GNU kullanmak ve ardından bunları tekrar elle yapmak.


2
Util-linux bölümlendirme araçları (dahil sfdisk), util-linux 2.26 için GPT desteğini içerecek şekilde yeniden yazılmıştır. sfdiskfarklı gdiskolsa da, 1MiB'den önce küçük bir önyükleme bölümü yerleştirmeyi desteklemediğinden, benim yapılandırmada boğuldu. (bug zaten akıntıya bildirdi.)
Peter Cordes

Bir MBR diskini daha küçük bir diske klonladığımda, sfdisk -d'ye ek olarak dökümü düzenler ve başlangıç ​​/ bitiş sektörlerini değiştiririm. Bunu GPT diskleri için sgdisk ile nasıl yapabilirim? -R aracı yedekleme dosyası olmayan klonlar ve -b ikili bir yedekleme oluşturur, sfdisk gibi insan tarafından okunabilir / düzenlenebilir değil!
Costin Gușă

bununla ilgili güncelleme: sfdisk, GPT’yi izleyen ve 1 MB’da biten küçük bir önyükleme bölümü dahil, bu şekilde kullanıldığında ne verdiğinizi kabul eder. unix.stackexchange.com/a/12988/79808
Peter Cordes

Nasıl hakkında dd if=/dev/sda of=/dev/sdb?
juniorRubyist

Yanıtlar:


122

Ubuntu Universe depolarında bulunan gdisk'i kurun .

Ardından , bölüm tablosunu çoğaltmak için buradakisgdisk komutu kullanın ( buradaki man sayfası ):

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

İlk komut kopyalar arasında bölümleme tablosu sdXiçin sdY(bunlar karıştırmak için dikkatli olun). İkinci komut, diskteki GUID'yi ve tüm bölümleri rasgele belirler. Bu sadece diskler aynı makinede kullanılacaksa gereklidir, aksi takdirde gereksizdir.


9
Bu bilgi, arızalı bir RAID-1 diskini değiştirmek isteyen herkes için altındır. Teşekkürler!
Christian,

@ Hıristiyan Yep, bunun için kullandım.
Kris Harper

9
Herhangi bir tahrip edici değişiklik yapmadan önce, aşağıdakilerle yedekleme yaptığınızdan emin olun: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXvesgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat

11
Bu komut işe yarar ancak örnekte sürücü siparişinin geriye doğru olduğu belirtilmelidir. Bunu yazmanın daha açık bir yolusgdisk /dev/sdX -R /dev/sdY
Geoffrey

2
@KrisHarper: Gerçekten de öyle, ancak program komut satırı argümanlarını ayrıştırmak için getopt kullandığından, sıralamanın çömelmesi önemli değil. Man sayfası güncellenmelidir.
Geoffrey

28

Denedim ve benim için işe yaramadı. Bulduğum çözüm:

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

GPT ile çalışamadığı için bu çözümün daha iyi olduğunu buldum. Ayrıca son komutu şu şekilde değiştirdim: sgdisk -g / dev / sdb
Locke

1
Yukarıdakiler işe yarıyor, örneğin biraz geriye dönük olmasına (doğru olmasına rağmen) dikkat etmeniz gerekiyor. sgdisk /dev/sdX -R /dev/sdYdaha açıktır.
Geoffrey

5
İlk önce yedekleme, sonra geri yükleme. Bunu, sürücüleri birleştirmek için daha sezgisel ve daha az şans olarak buluyorum.
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 nerede:

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

1
Bu aynı zamanda istediğiniz disk olmayabilir tüm disk ve bölüm GUID'lerini klonlar. Ayrıca, yedekleme tablosunu diskin sonuna yüklemez.
goertzenator

Bu şekilde seviyorum! ancak yazmayı tercih edin: sed '$s/:.*//p;d'bunun yerine tail -n1 | cut -b19'dan fazla bölümünüz varsa bu başarısız olacaktır!
F. Hauri

1
@ goertzenator Haklısın, bunun için düzenli bir parted araç çalıştırabilir , bir şey yapabilir (herhangi bir belirsiz bayrağı ayarlamak gibi no), bu her iki uçta da bölüm tablosunu yeniden yazacaktır!
F. Hauri

Hiç Büst bölümde kullanılmadın mı?
Aaron Franke

B, A'yı bulmak için kullanılan bir değerdir.
dodexahedron

2

Sadece sgdisk ile çoğaltmayı denedim ve gayet iyi çalışıyor - sadece okuma satırı sözdizimi kurallarına uymanız gerekiyor:

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

veya

   sgdisk -R/dev/target /dev/source

ve her şey çalışıyor.


3
Bu tam olarak cevabımın söylediği şey.
Kris Harper

-1

Buna en kolay cevap:

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

A nın 'iyi' bölümleme tablosu yapılandırmasını yedek sürücüye B (yeni sürücü) kopyalamak için.


Sorunun neden bir seçenek olmadığını açıklayan kısmını kaçırdınız.
DavidW

2
Yanıtınız yok çalışmıyor için GPT yalnızca dışı GPT
Jan Dev

Bunun mevcut sürümünde sfdiskişe yarıyor.
Gert van den Berg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.