Gddrescue가 맵파일을 요청했지만 맵파일 생성을 거부했습니다.

Gddrescue가 맵파일을 요청했지만 맵파일 생성을 거부했습니다.

나는 사용하고있다여기 gddrescue 문서의 예 3디스크를 0으로 쓰고 보류 중인 불량 섹터를 강제로 재할당합니다.

동일한 문서에는 다음과 같은 내용이 나와 있습니다.

mapfile이 존재하지 않으면 ddrescue가 이를 생성합니다.

하지만 예제 3을 거의 그대로 실행하면 다음과 같습니다.

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc mapfile.txt

...오류가 발생합니다.

ddrescue: 'mapfile.txt' 맵 파일이 존재하지 않거나 읽을 수 없습니다.

내가 실행하면 :

ddrescue -vvvv --fill-mode=- -f --synchronous /dev/zero /dev/sdc -m /cygdrive/b/users/user/desktop/mapfile.txt

...같은 오류가 잘린 버전으로 표시됩니다.

ddrescue: '/cygdrive/b/users/user/desktop/mapfile.txt' 맵 파일이 존재하지 않거나 없습니다.

Cygwin을 통해 Windows 7을 사용하고 있습니다 gddrescue.

이것은 Cygwin 구현의 버그입니까 dd, 아니면 뭔가 빠졌습니까?

답변1

버그가 아닙니다. 내 쿠분투에서도 마찬가지입니다. 나는 당신이 사용한 옵션 때문이라고 생각합니다 --fill-mode. 이 모드에는문서의 자체 장. 당신이 놓치고 있는 부분은 바로 이 부분입니다.

ddrescue옵션 과 함께 호출 되면 --fill-mode"채우기 모드"에서 작동합니다.다른기본 "구조 모드"에서. 즉, --fill-mode옵션 을 사용하면 ddrescue아무 것도 구출되지 않습니다. 상태 문자가 있는 infile블록 에서 읽은 데이터로만 채워집니다.outfile~에서mapfile옵션 에 대한 인수로 지정된 유형 문자 중 하나와 일치합니다 --fill-mode.

즉, --fill-mode이미 존재하는 mapfile.


여기서 상태 문자와 유형 문자는 무엇입니까?

"상태 문자"라는 문구는 mapfile다음과 같이 이해되어야 합니다.이 조각:

상태 문자는 다음 중 하나입니다.

문자 의미
'?' 시도하지 않은 블록
'*' 실패한 블록 다듬지 않은
'/' 실패한 블록 스크랩하지 않은
'-' 실패한 블록 불량 섹터
'+' 완료된 블록

다음은 맵파일의 예입니다:

# Mapfile. Created by GNU ddrescue version 1.23
# Command line: ddrescue -d -c18 /dev/fd0 fdimage mapfile
# Start time:   2015-07-21 09:37:44
# Current time: 2015-07-21 09:38:19
# Copying non-tried blocks... Pass 1 (forwards)
# current_pos  current_status  current_pass
0x00120000     ?               1
#      pos        size  status
0x00000000  0x00117000  +
0x00117000  0x00000200  -
0x00117200  0x00001000  /
0x00118200  0x00007E00  *
0x00120000  0x00048000  ?

이제 "옵션에 대한 인수로 지정된 유형 문자 --fill-mode"는 바로 뒤에 나타나는 문자입니다 --fill-mode=.

따라서 mapfile위의 예와 같고 다음을 사용하면

  • --fill-mode=-, 그러면 위치에서 시작하는 블록 ddrescue만 채웁니다 .0x000002000x00117000
  • --fill-mode=?-*(셸 글로빙에 주의하세요. 가능성은 낮지만 여전히) , 또는 로 ddrescue표시된 조각을 채웁니다 .?-*

관련 정보