할당된 공간에만 dd를 사용하려면 어떻게 해야 하나요?

할당된 공간에만 dd를 사용하려면 어떻게 해야 하나요?

DD를 사용하여 전체 디스크를 백업하고 싶습니다. 3개의 파티션으로 구성된 512GB 디스크가 있는데 8GB만 차지하고 나머지는 사용되지 않습니다.

root@routerMARS:~# parted  /dev/sda print
Model: ATA MT-512 (scsi)
Disk /dev/sda: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
128     17.4kB  262kB   245kB                      bios_grub
 1      262kB   17.0MB  16.8MB  fat16              legacy_boot
 2      17.0MB  8000MB  7983MB  ext2

나는 그것을 다음과 같은 것으로 백업하고 싶다

dd if=/dev/sda bs=4M conv=noerror | pv | gzip -c > /mnt/backupusb/sda.img.gz

그렇다면 제가 생각한 것처럼 백업을 위해 with 을 사용해야 합니까 dd?count=$(( 8000 / 4 ))

나는 다음을 수행했습니다.

DD_DISK=/dev/sda  
SAVE_FILE=/mnt/backupusb/sda.img.gz  
DD_BS=4194304 # 4 MB  
DISK_LEN=$(parted --script --json ${DD_DISK} unit B print | jq '.disk.partitions | map(.end) | [.[]|rtrimstr("B")|tonumber] | max')  
DD_COUNT=$(( (DISK_LEN + DD_BS - 1) / DD_BS )) # "DD_BS - 1" is to round up division

sync
dd if=${DD_DISK} bs=${DD_BS} count=${DD_COUNT} conv=noerror | pv --buffer-size ${DD_BS} --size ${DISK_LEN} --rate-limit 50M | gzip -c > ${SAVE_FILE}

맞는지 추천 부탁드립니다.

관련 정보