dd를 사용하여 디스크를 복제하지만 특정 파티션을 제외하는 방법은 무엇입니까?

dd를 사용하여 디스크를 복제하지만 특정 파티션을 제외하는 방법은 무엇입니까?

dd를 사용하여 디스크를 복제하지만 특정 파티션을 제외하는 방법은 무엇입니까?

그래서 나는 (Raspberry Pi 4B에서) 다음을 얻습니다.

Device         Boot     Start        End   Sectors   Size Id Type
/dev/mmcblk0p1           8192     532479    524288   256M  c W95 FAT32 (LBA)
/dev/mmcblk0p2         532480  227000319 226467840   108G 83 Linux
/dev/mmcblk0p3      227000320 1000144895 773144576 368.7G 83 Linux

pi.img필요한 경우 복원할 수 있도록 전체 시스템을 파일(아마도)로 백업하고 싶습니다 .

하지만 백업하는 방법 /dev/mmcblk0p1/dev/mmcblk0p2 오직? ( /dev/mmcblk0p3동영상이 많은 파티션이고 368GB가 너무 커서 제외했습니다.)

이 작업을 수행할 수 없으면 dd다른 옵션이 있습니까? 감사해요.

답변1

"백업 섹터 227000320"

전체 /dev/mmcblk0p 디스크 백업을 시작하고 /dev/mmcblk0p2 끝에서 복사를 중지합니다. 227000320 섹터로 계산됩니다.

노트: 위 입력 내용에는 기본 정보가 누락되어 있으므로 다음과 같은 정보가 있다고 가정합니다.

단위: 1 * 512 = 512바이트 섹터

부서크기(논리적/물리적): 512바이트/512바이트

이는 단위 및 섹터 번호가 정확히 무엇을 나타내는지(512바이트) 알려줍니다.

아래와 같이 dd 기본 설정(bs=512 또는 이에 상응하는 bs=1b)을 사용하여 백업합니다. 그러나 bs 값이 작고 IO 액세스가 크기 때문에 이 명령은 시간이 너무 오래 걸립니다. 최적화된 명령이 필요합니다. (이 코드는 이해를 돕기 위한 것입니다.)

sudo dd if=/dev/mmcblk0p of=/backup_folder/RasPiBackup_1b.img bs=1b count=227000320 status=progress

노트: 범위'1b'동일한'512'. 필요에 따라 교환할 수 있습니다. 아래 정보 출처를 참조하세요.

설명에 따르면https://www.landoflinux.com/linux_dd_command.html:

b=512 | K=1024 | M=1024 * 1024 | G=1024*1024*1024

귀하의 경우 : bs -> 개수 | 1b -> 227000320 | 1K -> 113500160 | 1M -> 1G -> 109

내 (Pi4 4GB) 시스템에서 가장 빠른 복사 속도는 bs=1M과 bs=4M 사이입니다.

### 백업 시작###

따라서 최적화된 명령은 다음과 같습니다.

sudo dd if=/dev/mmcblk0p of=/backup_folder/RasPiBackup_1M.img bs=1M count=110840 status=progress

이미지 복구

sudo dd if=/backup_folder/RasPiBackup_1M.img of=/dev/mmcblk0p bs=1M status=progress

또는

백업에 pigz(GZip의 병렬 구현)를 사용하면 많은 공간을 절약하고 압축 시간을 2.5배 단축할 수 있습니다! pv 명령은 진행 상황을 표시합니다.

sudo dd if=/dev/mmcblk0p bs=1M count=110840 | pv | pigz > /backup_folder/RasPiBackup_1M.img.gz

pigz 이미지 복구

pigz -d  /backup_folder/RasPiBackup_1M.img.gz | pv | sudo dd of=/dev/mmcblk0p bs=1M

### 백업 종료###

### 이미지 처리 시작###

이미지 콘텐츠 확인

sudo fdisk -l /backup_folder/RasPiBackup_1M.img

MOUNT는 /dev/mmcblk0p1 파티션(8192 * 512 = 4194304)을 미러링하여 해당 내용을 봅니다.

sudo mkdir /mnt/RasPiBackup-mmcblk0p1
sudo mount -o loop,offset=4194304 /backup_folder/RasPiBackup_1M.img /mnt/RasPiBackup-mmcblk0p1

MOUNT는 /dev/mmcblk0p2 파티션(532480 * 512 = 272629760)을 미러링하여 해당 내용을 봅니다.

sudo mkdir /mnt/RasPiBackup-mmcblk0p2
sudo mount -o loop,offset=272629760 /backup_folder/RasPiBackup_1M.img /mnt/RasPiBackup-mmcblk0p2

/dev/mmcblk0p3에 대한 "GHOST" 파티션 정보 삭제

노트:mmcblk0p3 파티션은 백업되지 않았지만 이미지 파일에는 여전히 이에 대한 구성 정보가 포함되어 있습니다. 우리는 그것을 쉽게 제거할 수 있습니다. (소홀히 하다오류: 디스크 외부에는 파티션이 있을 수 없습니다!)

이미지 파일에서 사용 가능한 파티션을 인쇄합니다.

sudo parted /backup_folder/RasPiBackup_1M.img 'print'

/dev/mmcblk0p3은 파티션 3이므로 삭제하세요.

sudo parted /backup_folder/RasPiBackup_1M.img 'rm 3'

SHRINK는 이미지에서 사용되지 않는 공간을 제거하여 더 작은 SD 카드에도 들어갈 수 있도록 이미지 크기를 줄일 수 있습니다. https://github.com/Drewsif/PiShrink

sudo pishrink.sh /backup_folder/RasPiBackup_1M.img

RasPiBackup_1M.img의 인스턴스를 더 많이 유지하는 경우 압축하여 /backup_folder의 크기를 줄입니다. GZip의 병렬 구현:https://github.com/madler/pigz

pigz /backup_folder/RasPiBackup_1M.img /backup_folder/RasPiBackup_1M.img.gz

압축을 풀지 않고 아카이브 파일의 내용 나열

pigz -l /backup_folder/RasPiBackup_1M.img.gz

### 이미지 처리 종료###

관련 정보