읽기 오류가 있는 dd 재개, 숫자 건너뛰기/탐색

읽기 오류가 있는 dd 재개, 숫자 건너뛰기/탐색

다음 명령을 사용하여 다소 손상된 CD에서 데이터를 복사하려고 합니다.

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress

그러나 'of' 장치의 연결이 끊어지고 dd가 중지되었습니다(아래 출력).

...
dd: error reading '/dev/sr1': Input/output error
1074889+17746 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s
dd: writing to 'IDT.img': Input/output error
1074889+17747 records in
1092635+0 records out
559429120 bytes (559 MB, 534 MiB) copied, 502933 s, 1.1 kB/s

다음으로 재개할 수 있나요?

dd if=/dev/sr1 of=IDT.img conv=sync,noerror status=progress seek=1092635 skip=1092635

아니면 탐색/건너뛰기 숫자가 둘 다여야 할까요 1092636, 아니면 건너뛰기/탐색이 서로 달라야 할까요, 아니면 완전히 달라야 할까요?

추신: 아마도 잘못된 명령을 사용하고 있을 것입니다. 예를 들어 ddrescue가 더 나을 것입니다. 그러나 나는 아마도 지금(?) dd에 갇혀 있을 것입니다. 출력 파일 측면에서 더 이상 오류가 발생하지 않을 것으로 예상됩니다.

답변1

읽기 오류가 발생했으므로 옵션이 conv=sync,noerror데이터 스트림을 거의 확실히 변경하여 불행하게도 출력 파일을 쓸모없게 만들거나 최소한 부정확한 복사본으로 만들었습니다.

입력에 잘못된 읽기(짧은 읽기)가 있을 때마다 conv=sync옵션은 NUL 바이트로 블록을 채웁니다. 명령 은 dd중단된 위치부터 입력 스트림을 계속하려고 시도하지만 이제 출력에는 알 수 없는 수의 NUL 바이트가 삽입됩니다.

dd사용을 중지 하고 사용해야 합니다.ddrescue, 불량 미디어에서 데이터를 복구하기 위해 만들어졌습니다.

유사한 주제에 대한 참조 답변

답변2

사용구출. dd는 읽을 수 없지만 손상된 부분을 "보존"하면서 손상된 미디어를 읽을 수 있습니다.

원본 데이터를 상상해 보세요.

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c d e f g h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

손상 후( X)는 다음과 같습니다.

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c X X X X h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

dd con=sync,noerror가 읽을 내용은 다음과 같습니다.

  +-+-+-+-+-+-+-+-+
  |a b c h i j k l|
  +-+-+-+-+-+-+-+-+

ddrescue가 읽을 내용.

  +-+-+-+-+-+-+-+-+-+-+-+-+
  |a b c 0 0 0 0 h i j k l|
  +-+-+-+-+-+-+-+-+-+-+-+-+

보시다시피 dd가 읽은 원본 메시지는 왜곡되어 있으며 이러한 방식으로 파일 시스템 이미지를 생성하면 사용할 수 없게 됩니다. 문제 없이 마운트할 수 있는 Ddrescue 이미지는 평소와 같이 손상되지 않은 데이터에 액세스하고 손상된 데이터를 쉽게 따로 보관하고 다음 처리할 수 있도록 도와줍니다.

관련 정보