한 하드 드라이브에서 다른 하드 드라이브로 GPT 파티션 구성표를 빠르게 복사하려면 어떻게해야합니까?


79

비 GPT 파티션 테이블에서 할 수 있습니다

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

그러나 sfdiskGPT 파티션 테이블은 지원하지 않습니다. 대신 무엇을 사용할 수 있습니까?

GNU parted를 사용하여 파티션 크기를 출력 한 다음 수동으로 다시 만드는 것이 아니라 하나 또는 두 개의 명령 솔루션을 찾고 있습니다.


2
util-linux 분할 도구 (포함 sfdisk)는 util-linux 2.26에 대한 GPT 지원을 포함하도록 재 작성되었습니다. 그러나 1MiB 이전에 작은 부팅 파티션 배치를 지원하지 않는다는 sfdisk점과 다릅니다 gdisk. 따라서 구성에 질식했습니다. (버그가 이미 업스트림에보고되었습니다.)
Peter Cordes

sfdisk -d 외에도 MBR 디스크를 더 작은 디스크로 복제 할 때 덤프를 편집하고 시작 / 종료 섹터를 수정합니다. GPT 디스크 용 sgdisk로이 작업을 수행하려면 어떻게합니까? -R은 중간 백업 파일없이 복제하고 -b는 sfdisk처럼 사람이 읽거나 편집 할 수없는 이진 백업을 만듭니다!
Costin Gușă

이것에 대한 업데이트 : sfdisk는 GPT 다음의 작은 부팅 파티션을 포함하여 1MB로 끝나는 방식을 포함 하여이 방식으로 사용할 때 제공 한 모든 것을 허용합니다. unix.stackexchange.com/a/12988/79808
Peter Cordes

어때요 dd if=/dev/sda of=/dev/sdb?
juniorRubyist 2016 년

답변:


122

Ubuntu Universe 저장소에서 사용 가능한 gdisk 를 설치하십시오 .

그런 다음 sgdisk명령 ( man page here )을 사용하여 파티션 테이블을 복제하십시오.

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

첫 번째 명령 사본의 파티션 테이블 sdXsdY(이를 혼합하지 않도록주의). 두 번째 명령은 디스크와 모든 파티션에서 GUID를 무작위 화합니다. 디스크를 동일한 시스템에서 사용해야하는 경우에만 필요합니다. 그렇지 않으면 필요하지 않습니다.


9
이 정보는 고장난 RAID-1 디스크를 교체하려는 모든 사람에게 적합합니다. 감사!
Christian

@Christian Yep, 그것이 내가 사용한 것입니다.
Kris Harper

9
파괴적인 변경을하기 전에 다음 sgdisk --backup=/some/safe/location/sdX.gpt /dev/sdX과 같이 백업하십시오 :sgdisk --backup=/some/safe/location/sdY.gpt /dev/sdY
Michael Kropat

11
이 명령은 작동하지만이 예에서는 드라이브 순서가 거꾸로되어 있습니다. 이것을 작성하는 더 확실한 방법은sgdisk /dev/sdX -R /dev/sdY
Geoffrey

2
@KrisHarper : 실제로 그렇습니다. 그러나 프로그램이 getopt를 사용하여 명령 행 인수를 구문 분석하므로 순서는 중요하지 않습니다. 매뉴얼 페이지를 업데이트해야합니다.
Geoffrey

28

나는 시도했지만 그것은 효과가 없었다. 내가 찾은 해결책은 다음과 같습니다.

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

이 솔루션은 비 GPT와 함께 작동 할 수 있기 때문에 더 좋습니다. 또한 마지막 명령을 다음과 같이 변경합니다. sgdisk -g / dev / sdb
Locke

1
위의 작업은 효과가 있지만 예제가 약간 뒤로 향한다는 사실에주의를 기울여야합니다 (정확하지만). sgdisk /dev/sdX -R /dev/sdY더 분명하다.
Geoffrey

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 -b19 개 이상의 파티션이 있으면 실패합니다!
F. Hauri

1
@goertzenator 당신이 맞습니다. 이것에 대해 정기적 인 parted 도구를 실행 하고 (설정되지 않은 플래그를로 설정하는 것과 같은) 무언가를 할 수 있습니다 no. 양쪽의 파티션 테이블을 다시 씁니다!
F. Hauri

B상단 섹션에 사용한 적이 없습니까?
Aaron Franke

B는 A를 알아내는 데 사용되는 값입니다.
dodexahedron

2

방금 sgdisk로 복제를 시도했지만 정상적으로 작동합니다. readline 구문 규칙을 따라야합니다.

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

또는

   sgdisk -R/dev/target /dev/source

모든 것이 작동합니다.


3
이것이 바로 내 대답이 말하는 것입니다.
Kris Harper

-1

이에 대한 가장 쉬운 대답은 다음과 같습니다.

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

A의 'good'파티션 테이블 구성을 교체 드라이브 B (새 드라이브)에 복사합니다.


이것이 옵션이 아닌 이유를 설명하는 질문 부분을 놓쳤습니다.
DavidW

2
당신의 대답은 않습니다 작동하지 위한 GPT 에만 비 GPT
월 데브

현재 버전 sfdisk에서는 작동합니다.
게르트 반 덴 버그
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.