md5sum이 장치 파일에 대해 일관되지 않은 결과를 제공하는 이유는 무엇입니까?

md5sum이 장치 파일에 대해 일관되지 않은 결과를 제공하는 이유는 무엇입니까?

Lubuntu 16.04.3 LTS에서 일부 USB 플래시 드라이브를 백업하세요.

USB 드라이브를 노트북에 연결합니다. 자동 설치 프로그램이 해당 작업을 수행합니다. 모든 파티션을 읽기 전용으로 다시 마운트했습니다.

sudo mount -o remount,ro /dev/sdxn

ddrescue를 사용하여 USB 드라이브를 하드 드라이브의 이미지 파일로 복사(재부팅 가능)

sudo ddrescue -b 4096 /dev/sdx sdx.img sdx.log

(참고: 블록 크기는 에 의해 결정됩니다 sudo blockdev --getbsz /dev/sdx.)

md5sum sdx.img결과를 제공합니다 <foo>

분명한디스크 버퍼: sudo blockdev --flushbufs /dev/sdx

  • 그렇지 않으면 후속 명령이 실제 디스크 대신 디스크 캐시를 읽습니다. USB 드라이브의 활동 표시등과 후속 명령이 얼마나 빨리 완료되는지 확인하여 확인하세요.

sudo md5sum /dev/sdx결과<열> 제공

그래서 복사가 실패한 것 같습니다.

하지만

후속 sudo dd if=/dev/sdc bs=4096 | md5sum

다시 <foo> 결과를 ​​제공합니다!!! 무엇을요?

dd(및 ddrescue)는 모두 동일한 md5sum을 사용하여 일관된 이미지를 생성하지만 장치 파일을 직접 md5sum하면 다른 md5sum 결과를 얻습니다.

나는 분명한 것을 놓치고 있습니까? 대부분의 하우투에서는 장치 파일에 md5sum을 사용하도록 권장하므로 버그/기능을 발견했거나 바보 같고 매우 분명한 것을 놓친 것 같습니다. 어떤 단서가 있나요?

(USB 드라이브 중 일부는 부팅 가능하고 유용한 도구 세트가 있기 때문에 USB 드라이브 이미지를 생성하고 있습니다. 공간을 차지하므로 더 큰 드라이브의 경우 mksquashfs( mksquashfs sdx.img sdx.squash.img)를 사용하여 저장 요구 사항을 줄입니다. mksquashfs 전에 이미지 파일의 소유권을 루트에서 내 사용자 이름으로 변경하면 압축된 이미지를 설치할 수 있으므로 콘텐츠 검색이 쉬울 수 있습니다.

[추가 편집 : 확인함HDD 이미지 파일 체크섬이 장치 체크섬과 일치하지 않습니다.sudo blockdev --getsize64 /dev/sdx나는 이것이 디스크의 이미지 파일과 정확히 같은 크기라고 말할 수 있습니다 . ]

[추가 업데이트:

$ sudo cat /dev/sdx | md5sum a4db504f408c139cd2517b4038dfdb2f - $ sudo dd if=/dev/sdx | md5sum 2038272+0 records in 2038272+0 records out 1043595264 bytes (1.0 GB, 995 MiB) copied, 105.895 s, 9.9 MB/s e6174ed97f010cc7aa2ea9669cd85c50 - $ sudo md5sum /dev/sdx 823b619d439fbb0abde5841097c76e72 /dev/sdx

그런 다음 반복

$ sudo cat /dev/sdx | md5sum a4db504f408c139cd2517b4038dfdb2f - $ sudo dd if=/dev/sdx | md5sum 2038272+0 records in 2038272+0 records out 1043595264 bytes (1.0 GB, 995 MiB) copied, 105.747 s, 9.9 MB/s e6174ed97f010cc7aa2ea9669cd85c50 - $ sudo md5sum /dev/sdx 823b619d439fbb0abde5841097c76e72 /dev/sdx

따라서 동작은 반복 가능합니다. cat, dd 및 직접 md5sum을 사용하면 다른 답변이 제공되지만 분명히 cat은 매번 dd 및 md5sum과 동일한 답변을 제공합니다.

cat, 를 사용하거나 장치의 내용을 디스크 이미지에 복사할 수 있으므로 dd이것이 "올바른" 것입니까 ddrescue? pv]

관련 정보