ddrescue 디스크 이미지를 분할하고 다시 사용하는 방법은 무엇입니까?

ddrescue 디스크 이미지를 분할하고 다시 사용하는 방법은 무엇입니까?

500GB 외장 하드 드라이브가 있는데 그 내용을 구출해야 합니다. 안타깝게도 콘텐츠를 저장할 수 있는 400GB 파티션이 두 개밖에 없습니다. 디스크 이미지를 다음과 같이 분할할 수 있습니다.

~$ cd /mnt/part1/Recovery/
/mnt/part1/Recovery/$ ddrescue -f -n -i0 -s250...00 /dev/disk disk.part1.ddraw disk.part1.log
/mnt/part1/Recovery/$ cd /mnt/part2/Recovery/
/mnt/part2/Recovery/$ ddrescue -f -n -i250...00 /dev/disk disk.part2.ddraw disk.part2.log

(편의상 숫자 값에는 0이 여러 개 누락되어 있습니다.) 즉, -i및 플래그를 사용하여 디스크 이미지를 수동으로 두 부분으로 분할할 수 있습니까 -s?

둘째, 이미지의 두 부분을 하나로 맞추는 방법이 있습니까?

답변1

질문의 두 번째 부분에 대답하십시오. 두 개의 파일( a및 ) 에 저장된 FS를 마운트하는 방법 b제가 생각할 수 있는 두 가지 옵션은 다음과 같습니다.

장치 매퍼 및 루핑 장치 사용:

losetup /dev/loop1 a
losetup /dev/loop2 b
s() { blockdev --getsize "$1"; }
dmsetup create merge << EOF
0 $(s /dev/loop1) linear /dev/loop1 0
$(s /dev/loop1) $(s /dev/loop2) linear /dev/loop2 0
EOF
mount /dev/mapper/merge /mnt

아이디어는 두 개의 루프 장치를 연결한 선형 장치 매퍼 장치를 만드는 것입니다.

nbd 클라이언트 + nbd 서버 사용

ln -s a part.0
ln -s b part.1
nbd-server 127.1@12345 "$PWD/part" -m
nbd-client 127.1 12345 /dev/nbd0
mount /dev/nbd0 /mnt

(쉽지만 효율성이 떨어짐)

여기서는 nbd-server의 "멀티파트" 모드를 사용하고 부품의 이름을 지정하려고 합니다 part.0. part.1... 불행하게도 qemu-nbd와 달리 nbd-server/client는 Unix 도메인 소켓을 사용할 수 없습니다. 즉, TCP 오버헤드가 있어야 하며 qemu-nbd그러한 멀티파트가 없어야 합니다. 방법.

관련 정보