논리 드라이브를 포함하여 하드 드라이브 의 전체 파티션 레이아웃 을 백업 하여 해당 레이아웃을 다른 디스크로 복원 할 수 있습니다. 파티션의 내용을 복사 하지 않고 레이아웃 만 복사하고 싶습니다. 기본 및 확장 파티션의 경우 다음과 같이 쉽습니다.
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 파티션 테이블의 경우 sfdisk
util-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 디스크
sfdisk
Petr 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를 무작위 화합니다. 디스크를 동일한 시스템에서 사용해야하는 경우에만 필요합니다. 그렇지 않으면 필요하지 않습니다.
답변
오래되었지만 여전히 흥미로운 pyparted 및 python-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;