컴퓨터를 잘 모르는 한 가족이 카메라에 사용된 SD 카드에서 사진을 복구해 달라고 요청했습니다. 컴퓨터에서 장치를 포맷해야 한다고 알리자 그녀는 장치를 가지러 갔습니다. 그녀는 해당 형식을 계속 사용하지 않겠다고 맹세했으며 나에게 이를 수정하는 방법을 알고 있는지 물었습니다.
저는 Knoppix 부팅 CD를 사용합니다. ddrescue 및 기타 도구가 미리 번들로 제공되기 때문에 마음에 듭니다. 내장 카드 리더기에 카드를 삽입했는데 /dev/sdc 아래의 장치가 인식되었지만 자동으로 마운트되지 않았습니다.
나는 명령을 실행했다
ddrescue -d /dev/sdc /media/sdb1/test.img /media/sdb1/testimage.log
출력 결과는 정상적으로 작동함을 보여줍니다. 16GB를 모두 성공적으로 읽었으며 오류 0개를 보고했습니다. 그런데 16진수 편집기에서 img 파일을 열면 16GB의 0이 나옵니다. ddrescue가 자동으로 실패하고 모든 읽기 시도에 대해 0을 썼는지 확신할 수 없었기 때문에 일반 dd도 시도했지만 동일한 결과를 얻었습니다.
카드에 있는 모든 것이 괜찮아 보이는데, 분명히 비어 있습니다. 일반적으로 이러한 카드의 메모리 컨트롤러가 불량해지기 시작하면 메모리 크기나 불량 섹터의 존재를 잘못 보고하는 데 익숙하지만 여기에서는 모든 것이 공장에서 갓 나온 행복한 SD 카드처럼 보입니다.
물론, 그녀는 기술적으로 문맹이므로 그녀가 실수로 항목을 0으로 설정했을 가능성을 배제할 수는 없지만 실수로 빠른 포맷을 하고 파티션 테이블을 날려서 주소의 바이트를 새 상태로 만들었을 가능성을 배제할 수는 없습니다. .
제가 놓쳤거나 잘못한 것이 있나요? 아니면 카드가 완전히 지워졌나요?
답변1
귀하의 Linux 시스템이 작동하는 SD 카드를 읽을 수 있다고 가정합니다.
포맷되지 않은 카드(100% 0(완전히 비어 있음)인 카드 포함)를 삽입하면 "장치를 포맷해야 합니다."라는 Windows 메시지가 표시될 것으로 예상됩니다.
데이터가 손실되었습니다.
SD 카드의 플래시 재매핑 테이블이 모두 할당되지 않은 상태로 재설정된 경우(예: blkdiscard
전체 장치에서 Linux 명령을 사용하여) 다음이 표시됩니다. ( blkdiscard
이 명령은 내부 PCI 리더에서는 작동하는 경향이 있지만 USB 리더에서는 작동하지 않는 경향이 있다고 생각합니다.)
무작위로 추측하고 싶다면 컨트롤러가 계속 실행 중이지만 어떤 이유로 인해 다시 매핑 테이블을 로드할 수 없는 오류일 가능성이 더 높다고 생각합니다. 이 경우 카드에 쓸 수 없으며 쓴 내용은 자동으로 손실됩니다.
SD 카드에서 사용되는 명령을 거의 듣지 못하기 때문에 이것이 명령을 의도적으로 폐기했기 때문이라고 생각하지 않습니다.
SD 카드가 자체적으로 재설정되고 모든 매핑 테이블을 지우기로 결정하면 놀랄 것입니다. 전체 장치 blkdiscard
명령을 수행하는 데 시간이 좀 걸렸습니다. 적어도 자동으로 재설정되도록 설계할 이유는 없습니다.