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
### 이미지 처리 종료###