하드웨어를 확인하세요

하드웨어를 확인하세요

CD에서 데이터 파일을 읽을 때 매우 이상한 동작이 발생합니다. CD에서 동일한 파일의 복사본을 여러 개 만들면 데이터가 일치하지 않습니다. 이유를 모르겠습니다(읽기 오류 알림이 없고 다른 CD는 동일한 장치에서 잘 작동합니다).

오류는 매번 다른 위치에서 발생하므로 파일의 복사본을 여러 개 만들고 대부분의 복사본이 동의하는 값을 취하면 이러한 오류를 수정할 수 있을 것 같습니다.

ddrescue를 사용해 보았지만 오류를 감지하지 못했습니다(잘못된 데이터를 얻었지만 오류를 감지하지 못했습니다). 그러나 ddrescue가 읽은 데이터를 검사하면 분명히 불일치가 발견됩니다.

그러면 ddrescue(또는 다른 도구)를 사용하여 복사된 데이터를 확인하여 이 CD의 파일을 복구하고, 각 바이트의 올바른 값이 무엇인지 추측하기 위해 필요한 만큼 복사를 반복할 수 있습니까?

감사해요!

답변1

하드웨어를 확인하세요

좋은 해결책은 없지만 일반적으로 CD-ROM에서 읽은 데이터가 매번 다른 경우 CD에 ECC가 포함되어 있기 때문에 문제는 결함이 있는 CD의 실제 문제보다 하드웨어 문제처럼 들립니다. 즉, 섹터를 읽을 수도 있고 읽지 못할 수도 있습니다. 읽을 수 있으면 안정적인 데이터를 표시합니다.

일부 운영 체제에서는 미리 읽기(백그라운드에서 완료됨) 중에 읽기 오류가 발생한 후 임의의 데이터를 배포할 수 있으므로 이 ddrescue옵션을 사용하여 소스에 액세스할 수도 있습니다 .-d

다른 컴퓨터의 하드웨어를 공유하지 않는 다른 컴퓨터를 사용해 보고 여전히 이런 혼란스러운 결과가 나타나는지 확인하세요.

ddrescue하지만 참고하세요: 읽기 오류가 있는 경우 소스의 다른 부분이 복구될 수 있으므로 두 번 실행하면 두 개의 다른 이미지가 생성될 수 있습니다. (작성하신 내용은 오류가 없습니다. 옵션이 다를 수도 있습니다 -d.)

ddrescue이미지를 비교하는 도구

결함이 있는 하드웨어 문제를 해결할 수 있고 다른 이미지를 추출할 필요 없이 이미지를 소스와 다시 비교하려는 경우 내 도구를 사용해 볼 수 있습니다.ddrescue-verify차이점을 진단합니다.

ddrescue-verify소스 코드만 포함되어 있으므로(아마도 Linux에만 해당) 개발/빌드 시스템을 사용하는 방법을 알아야 합니다.

현재는 ddrescue-verify사용하기 쉬운 진단 도구로 설계되지 않았습니다. 이는 느린 네트워크 링크를 통해 이미지가 올바르게 획득되었는지 신속하게 확인할 수 있도록 만들어졌으므로 전체 이미지가 느린 회선을 통해 여러 번 전송될 때까지 절대 기다릴 수 없는 상황에서 사용됩니다.

에 대한 기존 문서가 충분하지 않은 경우 ddrescueddrescue-verify이상 도움을 드릴 수 없습니다(시간이 없습니다. 죄송합니다). 제가 드릴 수 있는 유일한 내용은 다음에서 발췌한 것입니다.위키피디아귀하의 요구에 적응할 수 있기를 바랍니다.

소스에서 이미지를 생성하는 원래 명령은 다음과 같으며 현재 작업 디렉터리에서 실행됩니다.

ddrescue -d /dev/source image.img image.log

이제 검증 데이터를 생성합니다:

ddrescue-verify image.img image.log > image.verify

이제 확인/비교 프로세스를 실행하세요.

ddrescue-verify -udis0 /dev/source image.verify > image.diff

이 시도는 읽을 수 없는 것으로 표시된 부분 ddrescue-verify(따라서 옵션) 을 건너뛰기 때문에 빠릅니다 .sourceimage.log-d

출력을 통해 차이점을 알 수 있습니다.

image.diff차이점 도 볼 수 있습니다 . 이 파일은 로그 파일과 동일한 형식을 가지며 ddrescue, 차이점은 "읽지 않음"으로 표시되므로 를 사용할 수 있습니다 ddrescuelog.

가능: 차이점을 이미지로 가져오기

차이점을 제거하려면 다음을 수행할 수도 있습니다.

# The next 2 commands take a snapshot of your original image
# Probably use lvm or ZFS snapshot to not duplicate all data:
cp image.img image.orig.img
cp image.log image.orig.log
# Now pull in the differences
cp -f image.diff image.log
ddrescue /dev/source image.img image.log

이제 발견된 변경 사항을 image.img업데이트 했습니다. image.log변경된 부분만 읽으려고 하기 때문에 속도가 빠릅니다(기본적으로 1MB마다 차이가 감지되어 조금 더 복사합니다).

참고: 이 마지막 단계는 필요한 만큼 전체 프로세스를 반복할 수 있도록 설계되었습니다.

이는 완전한 해결책이 아닙니다.

완벽한 솔루션을 제공해 드리지 못해 죄송합니다. 그러나 불분명한 상황에서 데이터를 복구하는 것을 추측하는 데는 아무런 문제가 없으며 즉시 작동합니다.

그러나 차이점을 비교하고 추출하는 방법과 결합된 스냅샷(LVM보다 훨씬 빠른 ZFS 또는 BTRFS를 권장합니다)을 사용하면 무엇이 정확하고 무엇이 잘못되었는지 알아낼 수 있습니다.

관련 정보