Есть ли способ получить информацию об имени файла / местоположении из MFT тома NTFS? - PullRequest
3 голосов
/ 27 марта 2009

Мне нужно получить список всех файлов на диске. Я использую рекурсивное решение. Но это занимает много времени. Мне было интересно, возможно ли получить имена и расположение всех файлов на диске NTFS из его основной таблицы файлов? Я думаю, что это будет очень быстро. Есть предложения?

Ответы [ 4 ]

2 голосов
/ 27 ноября 2009

Существует инструмент, который будет искать mft напрямую, он называется ndff. Я использовал его раньше, и это очень быстро.

Предположительно, можно делать то, что вы хотите - есть еще один инструмент под названием "Все", который, я думаю, делает то же самое - он также использует журнал изменений USN для обновления своего индекса.

1 голос
/ 28 марта 2009

У меня сложилось впечатление, что вы представляете себе какую-то похожую на список структуру в MFT, которую вы можете прочитать за один раз, без или с минимальным поиском.

Это не тот случай. MFT использует тип b-дерева для хранения путей. Когда вы сканируете структуру каталогов на вашем диске, вы фактически пересекаете b-дерево MFT; Вы делаете то, что должны были бы делать, если бы обращались к MFT напрямую.

1 голос
/ 28 марта 2009

Когда вы получаете список всех файлов на диске в формате NTFS, используя рекурсивное решение, вы получаете их из MFT. При извлечении списка имен файлов и каталогов должно быть мало дискового ввода-вывода вне MFT.

Прежде чем идти по пути определения формата MFT (который доступен в различных местах в Интернете) и написания кода для его непосредственного чтения, вам, вероятно, следует профилировать свой код и определить, что вы этого еще не сделали. CPU или IO связаны.

0 голосов
/ 21 декабря 2012

Да, есть, и программа Я просто с открытым исходным кодом делает именно это.

Вы можете прочитать исходный код, чтобы узнать, как он работает, но в основном он просто ищет FILE_NAME атрибутов внутри $ MFT, а затем использует поле ParentDirectory для получения родителя каждого файл.

Таким образом, он может полностью избежать чтения содержимого любого каталога.

...