답변:
ddrescue 를 재개 할 수 있지만 그렇게하려면 로그 파일이 필요합니다. 로그 파일은 ddrescue가 지금까지 진행 한 진행 상황을 기록하고 ddrescue를 다시 시작하면 로그 파일을 읽고 중단 된 지점에서 시작합니다.
로그 파일은 세 번째 매개 변수입니다.
ddrescue /dev/sdd1 ./bye1t.dd_rescue.image ~/sdd1.log
다음에 ddrescue가 실행될 때 로그 파일없이 ddrescue 실행을 이미 시작하고 취소 한 경우, 이미 복구 된 내용에 대한 기록이 없으므로 처음에 시작됩니다.
로그 파일을 지정하지 않은 경우에도 다음과 같은 희망이있을 수 있습니다.
따라서 튜토리얼을 읽지 않고 로그 파일없이 ddrescue를 시작했습니다. 이제 이틀 후 컴퓨터가 다운되어 ddrescue가 얼마나 많은 데이터를 저장했는지 알 수 없습니다. 더 나쁜 것은 구조를 다시 시작할 수 없다는 것입니다. 처음부터 다시 시작해야합니다.
또는 드라이브를 복사하기 시작했으며 dd conv=noerror,sync
현재 위에서 설명한 상황과 동일합니다. 이 경우 sync
변환 인수를 사용하여 호출하지 않으면 dd에서 만든 사본을 사용할 수 없습니다 .
절망하지 마십시오 (아직). Ddrescue는 경우에 따라 입력 파일과 (부분) 복사본에서 대략적인 로그 파일을 생성 할 수 있으며, 이는 거의 정확한 로그 파일만큼 좋습니다. 이것은 모든 0을 포함하는 섹터가 구출되지 않았다고 가정하여 간단히 만듭니다.
그러나 사본의 대상이 드라이브 또는 파티션 인 경우 (또는 기존 일반 파일 및 잘림이 요청되지 않은 경우), 처음부터 ddrescue를 다시 시작해야합니다. (물론 이번에는 로그 파일과 함께) 그 이유는 드라이브에 아직 덮어 쓰지 않은 오래된 데이터가있을 수 있기 때문에 시도하지 않고 0이 아닐 수 있기 때문입니다.
예를 들어, 먼저 다음 명령 중 하나를 시도한 경우 :
ddrescue infile outfile
또는
dd if=infile of=outfile conv=noerror,sync
이 명령으로 대략적인 로그 파일을 생성 할 수 있습니다.
ddrescue --generate-mode infile outfile logfile
https://wiki.archlinux.org/index.php/Disk_cloning에 따르면 conv=noerror,sync
스위치 를 사용하면 dd
실제로 읽기 오류가 발생한 위치가 아니라 블록 끝에 0 을 추가 하는 것으로 보입니다 . 이는 2013-08-29의 Miles Wolbe의 답변과는 상반됩니다.
예를 들어, 올바른 순서가 198123283
있고 중간에 읽기 오류가 있으면 198283000
, not이 198000283
됩니다.
따라서 실제로 읽기 오류가있는 경우 제안 된 방법은 정확하지 않습니다. 읽을 수있는 영역은 0으로 채워지지만 "구조 된"것으로 간주됩니다.
그건 그렇고, 대상 드라이브를 0으로 채우거나 (예 : WinHex로 수행 할 수있는 여유 공간) 이러한 복구 시도를 시작하는 것이 좋습니다.