it-swarm-ko.tech

표준 도구를 사용하여 전체 디스크의 파티션 레이아웃을 복사하는 방법

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

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가 나머지를 수행하기 때문입니다. 모든 것을 다시 빈 디스크에 다시 넣고 동일한 레이아웃을 복원 할 수 있어야합니다. fdisk 또는 parted와 같은 파티션 도구를 사용하는 것은 좋지만 사용 (스크립트)을 자동화 할 수 있어야하며 X 관련 패키지 (명령 줄 만)에 의존해서는 안됩니다.

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

86
Lauritz V. Thaulow

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

저장:

sfdisk -d /dev/sda > part_table

복원:

sfdisk /dev/sda < part_table

GPT 파티션 테이블의 경우 util-linux 2.26 이상에서 sfdisk가 필요합니다. libfdisk 위에 처음부터 다시 작성 .

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

92
Petr Uzel

의존 소스 디스크가 MBR (일명 "dos"또는 "msdos") 또는 GPT (일명 "GUID") 파티션 테이블.

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

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

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 디스크

petr Uzel의 답변에서 제안한대로 sfdisk 또는 다음 변형을 사용하십시오.

# 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 님이 herehere 에 정답을 받았습니다.

GPT fdisk 가 필요합니다. 다운로드 페이지 를 보거나 Sudo apt-get install gdisk.

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

# Save GPT 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을 무작위로 지정합니다. 디스크가 동일한 시스템에서 사용되는 경우에만 필요하며, 그렇지 않으면 필요하지 않습니다.

54
mivk

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

업데이트 :

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

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

그러나이 명령은> 2 TB 파티션 및 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;
5
dhchdhd