Làm cách nào tôi có thể nhanh chóng sao chép sơ đồ phân vùng GPT từ ổ cứng này sang ổ cứng khác?


79

Trên bảng phân vùng không phải GPT tôi có thể làm

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

Nhưng sfdiskkhông hỗ trợ bảng phân vùng GPT. Tôi có thể sử dụng cái gì thay thế?

Tôi đang tìm kiếm một hoặc hai giải pháp lệnh, không chỉ sử dụng GNU parted để xuất kích thước phân vùng và sau đó tự làm lại chúng.


2
Các công cụ phân vùng linux-linux (bao gồm sfdisk) đã được viết lại để bao gồm hỗ trợ GPT cho produc-linux 2.26. sfdiskTuy nhiên, khác gdiskở chỗ nó không hỗ trợ đặt phân vùng khởi động nhỏ trước 1MiB, do đó, nó bị nghẹt trong cấu hình của tôi. (đã báo cáo lỗi ngược dòng rồi.)
Peter Cordes

Khi tôi sao chép một đĩa MBR sang một đĩa nhỏ hơn, ngoài sfdisk -d tôi cũng chỉnh sửa kết xuất và sửa đổi các cung bắt đầu / kết thúc. Làm cách nào để làm điều này với sgdisk cho các đĩa GPT? -R nhân bản không có tệp sao lưu trung gian và -b tạo bản sao lưu nhị phân, không thể đọc / chỉnh sửa được con người như sfdisk!
Costin Gușă

cập nhật về điều này: sfdisk hiện chấp nhận mọi thứ bạn cung cấp khi sử dụng theo cách này, bao gồm một phân vùng khởi động nhỏ theo GPT, kết thúc ở mức 1MB. unix.stackexchange.com/a/12988/79808
Peter Cordes

Thế còn dd if=/dev/sda of=/dev/sdb?
juniorRubyist

Câu trả lời:


122

Cài đặt gdisk có sẵn trong kho Ubuntu Universe.

Sau đó sử dụng sgdisklệnh ( trang man ở đây ) để sao chép bảng phân vùng:

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

Lệnh bản đầu tiên trên bảng phân vùng của sdXđể sdY(cẩn thận không để nhầm lẫn giữa chúng). Lệnh thứ hai ngẫu nhiên GUID trên đĩa và tất cả các phân vùng. Điều này chỉ cần thiết nếu các đĩa được sử dụng trong cùng một máy, nếu không thì không cần thiết.


9
Thông tin này là vàng cho bất cứ ai muốn thay thế đĩa RAID-1 bị lỗi. Cảm ơn!
Christian

@Christian Yep, đó là những gì tôi đã sử dụng nó cho.
Kris Harper

9
Trước khi thực hiện bất kỳ thay đổi mang tính hủy diệt nào, hãy đảm bảo thực hiện sao lưu với: sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdXsgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat

11
Lệnh này hoạt động nhưng cần lưu ý rằng thứ tự ổ đĩa bị ngược trong ví dụ. Một cách rõ ràng hơn để viết điều này làsgdisk /dev/sdX -R /dev/sdY
Geoffrey

2
@KrisHarper: Thật vậy, nhưng vì chương trình sử dụng getopt để phân tích các đối số dòng lệnh nên thứ tự không quan trọng ngồi xổm. Trang người đàn ông nên được cập nhật.
Geoffrey

28

Tôi đã thử và nó không làm việc cho tôi. Giải pháp mà tôi tìm thấy là:

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

Tôi thấy giải pháp này tốt hơn, bởi vì nó có thể hoạt động với không phải GPT. Tôi cũng thay đổi lệnh cuối cùng thành: sgdisk -g / dev / sdb
Locke

1
Những điều trên không hoạt động, bạn cần chú ý đến thực tế là ví dụ hơi ngược (mặc dù đúng). sgdisk /dev/sdX -R /dev/sdYlà rõ ràng hơn.
Geoffrey

5
Sao lưu đầu tiên, sau đó khôi phục. Tôi thấy điều này là trực quan hơn và ít cơ hội để trộn các ổ đĩa lên.
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

trong đó A là:

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

1
Điều này cũng nhân bản tất cả các GUID đĩa và phân vùng có thể không phải là những gì bạn muốn. Ngoài ra, nó không cài đặt bảng sao lưu ở cuối đĩa.
goertzenator

Tôi thích cách này! nhưng thích viết hơn: sed '$s/:.*//p;d'thay vì tail -n1 | cut -b1điều này sẽ thất bại nếu bạn có nhiều hơn 9 phân vùng!
F. Hauri

1
@goertzenator Bạn nói đúng, vì điều này bạn có thể chạy công cụ thông thường parted , làm một cái gì đó (như đặt bất kỳ cờ không đặt nào thành no), điều này sẽ viết lại bảng phân vùng ở cả hai đầu!
F. Hauri

Bạn không bao giờ sử dụng Btrong phần đầu?
Aaron Franke

B là một giá trị được sử dụng để tìm ra A.
dodexahedron

2

Tôi vừa thử sao chép với sgdisk và nó hoạt động tốt - bạn chỉ cần tuân theo các quy tắc cú pháp đọc:

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

hoặc là

   sgdisk -R/dev/target /dev/source

và mọi thứ hoạt động.


3
Đây chính xác là những gì câu trả lời của tôi nói.
Kris Harper

-1

Câu trả lời dễ nhất cho điều này là:

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

để sao chép cấu hình bảng phân vùng 'tốt' của A sang ổ đĩa B thay thế (là ổ đĩa mới).


Bạn đã bỏ lỡ phần trong câu hỏi giải thích tại sao đây không phải là một lựa chọn.
DavidW

2
Câu trả lời của bạn không hoạt động với GPT chỉ dành cho người không phải GPT
Jan Dev

Trên phiên bản hiện tại của sfdiskđiều này không hoạt động.
Gert van den Berg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.