
I/O 오류가 발생하는 dd를 사용하여 하드 드라이브의 이미지를 생성하려고 합니다. 결과적으로 'noerror' 매개변수를 추가했지만 복구를 시도하기 위해 오류를 추적하고 싶습니다.
현재 시도는 다음과 같습니다.
sudo dd if=/dev/sdb bs=1M conv=sync,noerror of=output.img 2>&1 | tee output.log
이를 통해 output.img와 output.log가 모두 생성되지만 둘 다 크기가 0바이트이며 dd를 종료하면 터미널에 출력이 출력되지 않습니다.
저는 ddrescue와 같은 도구를 사용하기 전에 'noerror' 옵션을 사용하여 dd를 사용하는 것을 선호합니다. 왜냐하면 저는 dd에 더 익숙하기 때문입니다.
또한 이 드라이브에는 단일 NTFS 파티션이 포함되어 있으므로 비트가 누락된 NTFS 파티션을 복구하는 방법에 대한 조언이 도움이 될 것입니다(드라이브는 500GB이고 처음 발생한 오류는 약 30GB였습니다).
감사해요!
답변1
그냥 사용하는 것이 좋습니다ddrescue
- 작업에 적합한 도구를 피하지 마십시오. 실행하는 것도 어렵지 않으며 스트레스도 덜 수 있습니다.
호출은 간단합니다.
첫 번째 실행:
-p
- 사전 할당된 공간-b 4M
- 속도를 위해 큰 섹터 크기를 사용하십시오.
ddrescue -p -b 4M ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
후속 실행: ( 와 달리 dd
여러 번 실행할 수 있으며 로그 파일을 참조하여 중단된 부분부터 계속됩니다.)
-b 512
- 더 작은 섹터 크기를 사용하여 간격을 메우십시오.-r 10
- 여러 번의 재시도 패스 사용
ddrescue -b 512 -r 10 ${SRC_DISK} ${DST_IMAGE} ${DST_LOGFILE}
읽기 오류가 있는 섹션에는 (기본적으로) 0이 포함되며, 아래와 유사한 로그 파일이 생성됩니다.
# pos size status
0x00000000 0x00014E00 +
0x00014E00 0x00000200 -
0x00015000 0x00005800 +
0x0001A800 0x00000200 -
0x0001AA00 0x00028000 +
0x00042A00 0x00000200 -
0x00042C00 0x00125400 +
표시된 선은 +
오류가 없는 영역이고 표시된 선은 -
오류가 있는 영역입니다.
읽기 오류의 성격에 따라 다음 옵션 중 일부를 조사해야 할 수도 있습니다.
-d, --direct
use direct disc access for input file
-K, --skip-size=<min>[,<max>]
initial size to skip on read error [64 KiB]
-M, --retrim
mark all failed blocks as non-trimmed
-O, --reopen-on-error
reopen input file after every read error
-r, --retry-passes=<n>
exit after <n> retry passes (-1=infinity) [0]
-R, --reverse
reverse the direction of all passes
귀하의 질문에 대한 직접적인 답변:
- 아마도 버퍼링 문제가 발생했을 것입니다. 많은 줄이 한꺼번에 나타나고 다시는 아무 것도 나타나지 않을 것입니다.
unbuffer
sudo
비밀번호를 요구할 수도 있지만 프롬프트를 리디렉션했기 때문에 아무 일도 일어나지 않습니다.