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