
나는 꽤 잘 알려진 문제를 안고 있지만 불행하게도 여기에 대한 지식이 약간 부족하여 여기에서 더 나은 통찰력을 찾을 수 있기를 바랍니다.
그래서 FAT32 파일 시스템을 사용하는 손상된 USB 스틱이 있습니다. 나는 ddrescue
으로 클론을 만들고 testdisk
. 파티션이 발견되어(휴!) 루프 장치를 만들어 losetup -f -P USB_clone.img
마운트했습니다. 지금까지는 괜찮았지만 이제 문제가 시작됩니다. 모든 파일이 올바른 크기( ls -al
)로 발견되었지만 파일을 복사하려고 하면 I/O 오류가 발생했습니다. 그래서 파티션을 다시 마운트 해제하고 dosfsck -l -r -v /dev/loop1p1
. 일부 파일은 복구할 수 있지만 대부분의 파일은 매우 흥미로운 방식으로 복구됩니다.
File size is 27589006 bytes, cluster chain length is 32768 bytes.
Truncating file to 32768 bytes.
이로 인해 파일이 잘립니다. 이건 내가 원하는 게 분명 아닌데...
그래서 이것은 몇 가지 질문으로 이어집니다.
여기서 무슨 일이 일어나는가? 파일 크기는 정확하게 감지할 수 있는 것 같지만, 뭔가 완전히 잘못된 것 같습니다. 흠, 뭐, 뭐죠? 아마도 파티션 테이블이겠죠?
dosfsck
파일 이름과 파일 크기가 올바르게 감지될 수 있는데 왜 이 문제를 해결할 수 없습니까?물론 더 중요한 것은 이러한 파일을 복구할 수 있는 방법이 있습니까?
추가 정보가 필요하면 요청하세요!
정말 감사합니다!
답변1
FAT 파일 시스템 조각화에 대한 좋은 설명이 있습니다.Quora: 운영 체제는 전체 데이터를 복구하기 위해 fat32 형식의 조각난 섹터를 어떻게 처리합니까?이르네 바너드 지음.
각 섹터에는 뒤쪽(또는 세부 디자인이 무엇이든 전면 - 그러나 해당 섹터 내부 어딘가)에 부품이 있습니다. "X 위치의 다음 섹터"를 나타내는 것입니다. 이는 FAT32를 포함한 모든 FAT 기반 파일 시스템의 설계에 있습니다. 또한 조각화로 인해 FAT에서 파일 액세스 속도가 느려지는 이유이기도 합니다.
작동 방식은 다음과 같습니다.
- 사용자(또는 실행 중인 일부 프로그램)는 운영 체제에 파일 열기 요청을 보냅니다.
- OS는 요청을 파일 시스템으로 전달합니다.
- FS(FAT)는 경로 + 파일 이름을 확인하여 주어진 경로에서 첫 번째 폴더를 찾습니다.
- 그런 다음 해당 루트 폴더 테이블(즉, 드라이브 폴더 계층 구조의 시작)을 읽습니다. 그러면 경로의 첫 번째 폴더에 대한 섹터 번호가 제공됩니다.
- 그런 다음 계속해서 해당 폴더의 테이블을 읽고 지정된 경로의 다음 폴더와 일치시킵니다. 경로에서 마지막 파일 이름/폴더 이름을 찾을 때까지 반복합니다.
- 이는 파일이 시작되는 섹터와 파일 크기를 제공하므로 모든 섹터를 찾은 시기를 알 수 있습니다(단순한 섹터 크기 추가).
- 첫 번째 섹터를 읽고 해당 메타데이터(즉, 다음 섹터에 대한 포인터)를 확인합니다.
- 해당 항목도 읽고 섹터의 데이터 크기를 이미 읽은 수에 추가합니다. 여전히 파일 크기보다 작으면 메타데이터의 다음 섹터로 계속해서 반복합니다.
그것의 핵심은 잘리는 파일이 아마도 조각화되어 있다는 것입니다. 복구 프로그램이 블록을 통과하여 다음 조각을 찾으려고 할 때 다음 블록이 어디에 있다고 생각하는지 신뢰하지 않기로 결정했습니다.
dosfsck
잘라낼 시기를 비교하고 결정하는 데 사용되는 규칙과 문제는 다음과 같습니다.https://linux.die.net/man/8/dosfsck그리고 처음부터 디스크가 어떤 손상을 입었는지 알지 못하면 왜 잘리는지 알기가 어렵습니다. FAT가 삭제된 경우 클러스터 체인에 나열된 클러스터 중 어느 것도 사용 중이라고 믿지 않고 규칙을 위반한 것일 수 있습니다.File contains bad or free clusters. The file is truncated.
dosfsck
복구 도구가 아닙니다. 디스크가 기본적으로 처음부터 "괜찮다"고 가정하는 복구 도구입니다.
다음과 같은 적절한 복구 도구를 실행하는 것을 살펴볼 수도 있습니다.photorec
사진보다 훨씬 더 많은 것을 복구할 수 있습니다.아니면 testdisk
할 수 있는 것단순한 파티션 복사 그 이상.