표준 도구를 사용하여 전체 디스크의 파티션 레이아웃을 복사하는 방법 restore 그러나 논리 파티션의 레이아웃과 관련하여 표준 도구

논리 드라이브를 포함하여 하드 드라이브 의 전체 파티션 레이아웃 을 백업 하여 해당 레이아웃을 다른 디스크로 복원 할 수 있습니다. 파티션의 내용을 복사 하지 않고 레이아웃 만 복사하고 싶습니다. 기본 및 확장 파티션의 경우 다음과 같이 쉽습니다.

dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore

그러나 논리 파티션의 레이아웃과 관련하여 표준 도구 중에 레이아웃을 저장하는 비슷한 방법이 있는지 궁금합니다. 주된 문제는 EBR의 위치에 대한 오프셋을 찾는 dd것입니다. 왜냐하면 EBR의 위치가 나머지를 수행 하기 때문입니다 . 모든 것을 다시 빈 디스크에 다시 넣고 동일한 레이아웃을 복원 할 수 있어야합니다. fdisk또는 같은 분할 도구를 사용하는 parted것이 좋지만 사용 (스크립트)을 자동화 할 수 있어야하며 X 관련 패키지 (명령 줄 만)에 의존해서는 안됩니다.

내 백업 계획은 struct 모듈을 사용하여 작은 파이썬 스크립트에서 수동으로 수행하지만 더 쉬운 방법이 있기를 바랍니다.



답변

이 작업에 sfdisk 를 사용할 수 있습니다 .

저장하기:

sfdisk -d /dev/sda > part_table

복원:

sfdisk /dev/sda < part_table

GPT 파티션 테이블의 경우 sfdiskutil-linux 2.26 이상 이 필요합니다 . 그것은 libfdisk 위에 처음부터 다시 작성되었습니다 .

그러면 새 UUID가 생성되지 않고 UUID가 변경되지 않습니다. 따라서 새 디스크는 레이아웃이 동일한 다른 디스크 만이 아니라 원본의 복제본입니다. 리눅스 /dev/disk/by-uuid/는 파티션 테이블의 UUID가 아니라 파일 시스템 UUID를 살펴 본다는 점에 유의 하십시오. sfdisk덤프에서 UUID를 편집하면 새 UUID가 생성됩니다 (파일의 시작 부분 근처에있는 파티션 테이블 자체의 파티션 및 UUID).


답변

소스 디스크가 MBR (일명 “dos”또는 “msdos”) 또는 GPT (일명 “GUID”) 파티션 테이블을 사용 하는지 여부에 따라 다릅니다 .

2TB가 넘는 디스크는 MBR을 사용할 수 없으므로 GPT입니다.

2TB 미만의 디스크는 두 가지를 모두 사용할 수 있으므로 먼저 어느 디스크인지 확인해야합니다.

Linux를 사용한다고 가정하면 다음 명령 중 하나를 사용하여 소스 디스크가 사용하는 파티션 테이블을 찾으십시오.

disk=/dev/sda

# Always available, but old versions may not recognize gpt
fdisk -l $disk | grep type

# `apt-get install gdisk` or equivalent on non-Debian systems
gdisk -l $disk | grep -A4 'scan'

# `apt-get install parted`
parted $disk print | grep Table

주어진

source=/dev/sda
dest=/dev/sdb

MBR 디스크

sfdiskPetr Uzel의 답변 또는이 변형에서 제안한대로 사용하십시오 .

# Save MBR disks
sfdisk -d $source > /partitions-backup-$(basename $source).sfdisk
sfdisk -d $dest   > /partitions-backup-$(basename $dest).sfdisk

# Copy $source layout to $dest
sfdisk -d $source | sfdisk $dest

GPT 디스크의 경우

정답은 여기여기Kris Harper에 의해 주어졌습니다 .

GPT fdisk 가 필요합니다 . 상기 봐 다운로드 페이지 또는 실행 sudo apt-get install gdisk.

그런 다음 sgdisk 명령을 사용하십시오 .

# Save MBR disks
sgdisk --backup=/partitions-backup-$(basename $source).sgdisk $source
sgdisk --backup=/partitions-backup-$(basename $dest).sgdisk $dest

# Copy $source layout to $dest and regenerate GUIDs
sgdisk --replicate=$dest $source
sgdisk -G $dest

마지막 명령은 디스크와 모든 파티션에서 GUID를 무작위 화합니다. 디스크를 동일한 시스템에서 사용해야하는 경우에만 필요합니다. 그렇지 않으면 필요하지 않습니다.


답변

오래되었지만 여전히 흥미로운 pypartedpython-lvm 바인딩.

최신 정보:

위의 내용은 sfdisk 매뉴얼 페이지 당 많은 현대 상황에서 작동하지 않기 때문에 게시되었습니다.

sfdisk는 GUID 파티션 테이블 (GPT)을 이해하지 못하며 큰 파티션 용으로 설계되지 않았습니다. 특히 고급 GNU parted (8)를 사용하십시오.

그러나이 명령은 2TB 이상의 파티션과 LVM을 지원합니다.

# parted -ms /dev/sda print > sda.parted

샘플 출력 :

BYT;
/dev/sda:12.9GB:scsi:512:512:msdos:VMware Virtual disk;
1:1049kB:12.9GB:12.9GB:::boot, lvm;


답변