문제

광학 미디어 (CDS 및 DVD)에 보관 된 파일 백업이 있습니다. 이들 모두에는 별도의 미디어에 저장된 PAR2 복구 파일이 있습니다. PAR2 파일이없는 경우에도 하나의 광학 드라이브에서 읽을 때 약간의 오류는 다른 드라이브에서 잘 읽을 수 있습니다.

문제는 결함이있는 미디어를 읽을 때 읽기 시간이 매우 길다는 것입니다. 장치는 여러 번 재 시도하는 경향이 있기 때문입니다.

문제는 다음과 같은 것입니다. 재시도 수를 어떻게 제어 할 수 있습니까 (즉, 회수없이 또는 한 번의 시도로 설정) 일부 시스템 호출? 다운로드 할 수있는 도서관? SCSI 계층에서 작업해야합니까?

문제는 주로 Linux에 관한 것이지만 Win32 포인터도 환영받을 것입니다.

도움이 되었습니까?

해결책

man readom, cdrecord와 함께 제공되는 프로그램 :

   -noerror
          Do not abort if the high level error checking in readom found an
          uncorrectable error in the data stream.

   -nocorr
          Switch  the  drive  into  a mode where it ignores read errors in
          data sectors that are a result of uncorrectable  ECC/EDC  errors
          before reading.  If readom completes, the error recovery mode of
          the drive is switched back to the remembered old mode.
   ...

   retries=#
          Set the retry count for high level retries in readom to #.   The
          default  is  to do 128 retries which may be too much if you like
          to read a CD with many unreadable sectors.

다른 팁

가장 좋은 도구는 dd_rhelp입니다. 단지

dd_rhelp /dev/cdrecorder /home/myself/DVD.img

, 차 한 잔을 마시고 멋진 그래픽을보십시오.

DD_RHELP RPM 패키지 정보 :

DD_RHELP는 전체 디스크에서 DDRESCUE를 사용하며 악의적 인 연령대를 시도하기 전에 최대 유효한 데이터를 수집하려고 시도합니다. DD_RHELP 작업을 무한한 시간 동안 떠나면 간단한 DD_RESCUE와 비슷한 영향을 미칩니다. 그러나이 무한한 시간이 없을 수도 있기 때문에 DD_RHELP는 나쁜 부문을 뛰어 넘고 유효한 데이터를 구출합니다. 장기적으로는 모든 장치를 DD_RESCUE로 구문 분석합니다.

원할 때마다 ctrl-c를 할 수 있고, DD_RHELP는 DD_RESCUE가 생성하는 로그 파일에 따라 작업을 재개합니다. 또한 장치가 구출 된 ASCII 사진에는 진행이 표시됩니다.

나는 그것을 많이 사용했고 매우 실질적입니다.

배포와 같은 DAG에서 Red Hat로 설치할 수 있습니다.

확인하는 동안 hdparm 리트리 수를 수정할 수 있습니다 (그렇지 않은 것 같음). 오류 유형에 따라 CD-ROM 속도를 낮추면 읽기 오류 수를 줄일 수 있으며, 이는 실제로 평균 판독 속도를 증가시킬 수 있다고 생각했습니다. 그러나 일부 부문이 완전히 읽을 수 없다면 CD-ROM 속도를 낮추는 것은 도움이되지 않습니다.

DD가 제안 된 이후, 나는 존재를 알고 SG_DD를 사용했지만 내 질문은 명령 (1) 또는 (1m)에 관한 것이 아니라 시스템 호출 (2) 또는 라이브러리 (3)에 관한 것이었다.

편집하다

도움이되는 또 다른 Linux 명령 줄 유틸리티는 sdparm. 다음 플래그는 하드웨어 재정의를 비활성화하는 것으로 보입니다.

sudo sdparm --set=RRC=0 /dev/sr0

어디 /dev/sr0 제 경우에는 광학 드라이브 장치입니다.

드라이버 레벨 액세스에 대해 묻고 있으므로 SCSI 명령 또는 API와 같은 ASPI를 살펴 봐야합니다. Windows VSO 소프트웨어 (아래의 BlindRead/BlindWrite 개발자)에서는 잠긴 저 레벨 액세스를 제공하는 훨씬 더 나은 API 인 Patin-Couffin을 개발했습니다.

http://en.wikipedia.org/wiki/patin-couffin

그것은 당신을 시작할 수 있습니다. 그러나 하루가 끝나면 드라이브는 실제로 USB, SATA, ATA, IDE 또는 기타이더라도 SCSI 명령과 인터페이스됩니다. 이 CD-ROM SCSI 계층 인터페이스의 첫 번째 사양 중 하나 인 ATAPI와 관련된 용어를 찾을 수도 있습니다.

적절한 Linux 라이브러리 또는 위의 검색어 및 개념을 사용하여 하위 레벨 명령을 다루는 예를 찾을 수 없다면 놀랄 것입니다.


구형 답변 :

맹검/사각화 CD-ROM 보호 체계의 전성기에 종종 의도적으로 나쁜 부문 또는 오류 정보를 사용하여 원래 CD를 검증했습니다.

이를 통해 재 훈련을 포함하여 수많은 매개 변수를 설정할 수 있습니다. CD-ROM 드라이브 자체는 재 시도 할 수 있는지 여부를 결정하며, 이것이 많은 (대부분의) CD-ROM 드라이브를 위해 소프트웨어를 통해 해결 될 수 있는지 확실하지 않습니다.

디스크를 ISO 형식으로 복사하여 오류를 무시한 다음 ISO 유틸리티를 사용하여 데이터를 읽을 수 있습니다.

-아담

살펴보십시오 ASPI 상호 작용. Windows와 Linux에서 사용할 수 있습니다.

DD (1)는 당신의 친구입니다.

dd if =/dev/cdrom of = image bs = 2352 conc = noerror, notrunc

드라이브는 여전히 약간 다시 시도 할 수 있지만 펌웨어를 수정하지 않고는 더 나아질 것이라고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top