나는 사용하고있다여기 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
만 채웁니다 .0x00000200
0x00117000
--fill-mode=?-*
(셸 글로빙에 주의하세요. 가능성은 낮지만 여전히) , 또는 로ddrescue
표시된 조각을 채웁니다 .?
-
*