NTFS 볼륨의 MFT에서 파일 이름/위치 정보를 얻는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/691024

  •  22-08-2019
  •  | 
  •  

문제

드라이브에서 모든 파일 목록을 가져와야합니다. 재귀 솔루션을 사용하고 있습니다. 그러나 많은 시간이 걸리고 있습니다. 마스터 파일 테이블에서 NTFS 드라이브에서 모든 파일의 이름과 위치를 얻을 수 있습니까? 나는 그것이 매우 빠를 것이라고 생각합니다. 제안이 있습니까?

도움이 되었습니까?

해결책

재귀 솔루션을 사용하여 NTFS 형식 드라이브의 모든 파일 목록을 얻으면 MFT에서 가져 오는 것입니다. 단순히 파일 이름과 디렉토리 목록을 검색 할 때 MFT 외부에는 디스크 IO가 거의 없어야합니다.

MFT 형식 (인터넷의 다양한 장소에서 구할 수 있음)을 결정하고 코드를 직접 읽기위한 경로를 내려 가기 전에 코드를 직접 읽으려면 코드를 프로파일 링하고 아직 CPU 나 IO가 아니라고 결정해야합니다. 경계.

다른 팁

MFT를 직접 검색하는 도구가 있으며 NDFF라고합니다. 나는 전에 그것을 사용했고 그것은 매우 빠릅니다.

아마도 당신이 원하는 것을 할 수있을 것입니다. "Everything"이라는 또 다른 도구가 있습니다.

나는 당신이 MFT에서 어떤 종류의 목록과 같은 구조를 상상하고있는 인상을 가지고 있습니다.

그렇지 않다. MFT는 B- 트리 유형을 사용하여 PathNames를 저장합니다. 디스크에서 디렉토리 구조를 스캔하면 실제로 MFT B- 트리를 걷는 것입니다. MFT에 직접 액세스하면해야 할 일을하고 있습니다.

네, 그와 프로그램 나는 단지 오픈 소스가 정확히 이것을한다.

소스를 읽으려면 어떻게 작동하는지 알아낼 수 있지만 기본적으로는 FILE_NAME 속성 $ MFT 내부에 다음을 사용합니다 ParentDirectory 필드 모든 파일의 부모를 얻습니다.

그렇게하면 디렉토리의 내용을 완전히 읽지 못할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top