물리적으로 구운 CD와 원본 ISO 이미지가 있습니다. CD 콘텐츠에 대한 참조 체크섬 파일은 제공되지 않습니다. 실제 CD가 정확하고(원본 이미지에 해당) 완전히 읽을 수 있는지 확인하는 방법은 무엇입니까?
답변1
아직 ISO가 있는 경우 바이트 단위로 비교할 수 있습니다 cmp
. 이것은 발견된 첫 번째 차이점에서 종료되는 매우 간단한 명령이므로 실제로 초기에 오류가 있는 경우 체크섬을 수행하는 것보다 훨씬 빠릅니다.
cmp /dev/cdrom /path/cdrom.iso
성공을 위한 가능한 결과:
- 출력 없음: 동일하며 모든 것이 잘 작동합니다.
&& echo OK
출력이 부족하여 혼란스러우면 명령에 추가할 수 있습니다. cmp: EOF on cdrom.iso
: 동일하지만 CDROM에는 ISO 파일보다 더 많은 바이트가 있습니다. 이는 일반적으로 CDROM 끝 부분의 제로 패딩으로 인해 발생합니다. 실제로는 중요하지 않으므로 여전히 성공입니다.
실패로 인해 발생할 수 있는 결과:
cmp: EOF on /dev/cdrom
: 어떤 이유로 인해 CDROM의 데이터가 불완전합니다. ISO가 너무 커서 실제 CD를 담을 수 없을 수도 있습니다./dev/cdrom cdrom.iso differ: byte 18296321, line 71780
: CDROM과 ISO 이미지 사이에 예상치 못한 차이가 있습니다.
답변2
먼저 CD를 임시 파일로 추출합니다.
dd if=/dev/sr0 of=copy.iso
그런 다음 합계의 크기가 같은지 확인합니다 . 예를 들면 다음과 copy.iso
같습니다 .orig.iso
stat -c '%s %n' orig.iso copy.iso
크기가 동일하면 간단합니다.
sha1sum orig.iso copy.iso
하지만 어떤 경우에는 사본이나 원본 이미지에 뒤에 0이 표시되기 때문에 크기가 약간 다를 수 있다는 것을 알았습니다. 예를 들어, copy.iso
다음보다 작은 경우 orig.iso
:
sha1sum copy.iso
head -c $(stat -c %s copy.iso) orig.iso | sha1sum
물론 후행 바이트가 0인지도 확인해야 합니다.
od -j $(stat -c %s copy.iso) orig.iso
오프셋을 제외한 첫 번째 줄은 0이어야 합니다. 두 번째 줄은 별표여야 합니다. 별표는 연속적인 동일한 선이 표시되는 것을 방지하는 것입니다.
답변3
ISO 파일이 CD를 굽는 데 사용된 파일과 동일한 경우 제가 가장 좋아하는 두 가지 파일은 다음과 같습니다.
diff /dev/sr0 /tmp/file.iso
녹화된 이미지를 이미지 파일과 비교하세요. 약간 마조히즘적인 느낌이 든다면 다음과 같이 시도해 볼 수 있습니다.
sha1sum /dev/sr0 /tmp/file.iso
그리고 서명을 비교해보세요. 이는 이미 SHA1 합계가 어딘가에 있는 경우 더 유용합니다. 두 명령 모두 미디어를 끝까지 읽습니다.
@Marki555가 제안한 방식으로 수행하려면 먼저 광학 드라이브와 이미지를 설치해야 합니다. 다음은 전체 스크립트입니다. (물론 sudo
루트 사용자라면 생략할 수 있습니다. 일반적으로 이는 좋지 않은 생각입니다.)
sudo mkdir /tmp/{a,b}
sudo mount /dev/sr0 /tmp/a -o ro # or whatever
sudo mount /tmp/file.iso /tmp/b -o loop,ro
diff -dur /tmp/{a,b}
sudo umount /tmp/a
sudo umount /tmp/b
sudo rmdir /tmp/{a,b}
답변4
Brasero는 다음을 수행할 수 있습니다: 도구->무결성 확인...