почему утилиты поиска файлов просто не загружают и не разбирают MFT?

3248
Stephen

Я заметил, что когда я ищу файл по имени (в Windows или Linux), это, как правило, интенсивный процесс на диске, особенно в Windows. Кажется, что утилита (Windows Search, или «найти» в Cygwin) сканирует все дерево каталогов, рассматривая каждый файл один за другим.

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

Я не могу доказать, что поиск еще не основан на MFT, но кажется маловероятным, основываясь на том, как он работает.

3
Сами поиски по имени файла обычно довольно быстрые. когда вы попадаете в контент, поиск занимает больше времени. не совсем уверен, что вы видите с точки зрения чрезмерного IO. Frank Thomas 10 лет назад 2
Например, в Cygwin, если вы перейдете к / cygdrive / c / и запустите `find ./ -name Desktop.ini`, он будет постепенно выводить инкрементальные результаты в течение многих минут. Большая часть действия - это «Другие операции ввода-вывода», которые, как я предполагаю, соответствуют метаданным, включая имена файлов. Меня беспокоит то, что он, кажется, рекурсивно зацикливается на дереве каталогов, так что каждый comnad «список каталогов» представляет собой отдельный запрос к жесткому диску через шину компьютера. Не будет ли теоретически намного быстрее загружать MFT в память большими порциями для обработки, устраняя эту задержку из шины? Stephen 10 лет назад 0
Тем более, что MFT обычно распределяется по очень немногим фрагментам (<10 почти всегда), поэтому вы можете читать в основном последовательно. Stephen 10 лет назад 0
Есть ли в Windows миллионы крошечных файловых элементов? Ваши поиски заканчиваются отображением пиктограмм значков или чего-либо, кроме размера файла, атрибутов файла, даты и местоположения? происходит поиск контента? Я могу искать террабайты с> 200k файлами за ~ 10 секунд, используя стороннюю утилиту. Если я избегаю системных и программных вещей и делаю пользовательские файлы размером 60 КБ всего несколько секунд, особенно после того, как они кэшируются. нет индексации. Диски дефрагментируются отсортированными директорами сначала (альфа) и файлами после (альфа). Я начал эту практику повторного заказа дефрагментации назад, когда дела шли медленно Psycogeek 10 лет назад 0
Я только что проверил поиск старых собак winXP на «обычном» компьютере, у меня уходит меньше 2 минут, чтобы пролистать 6T в файлах ~ 250K. некоторые из них отсортированы по порядку, но не все. Каковы технические характеристики машины, тип жестких дисков, скорость дисков и количество файлов, которые вы просматриваете? есть ли в вашем поиске локальная сеть, сопоставленные диски? Psycogeek 10 лет назад 0

1 ответ на вопрос

4
snowdude

There are programs that will search using the MFT on Windows NTFS volumes, e.g. open source projects:

http://sourceforge.net/projects/swiftsearch/

http://sourceforge.net/projects/ntfs-search/

They're VERY fast but the problem is that once you start going straight to the MFT you by-pass functionality such as security ACLs and shell extensions. Therefore most of these programs need to run with elevated permissions and don't necessarily produce the same results as an API based search.

Такие инструменты, как [Everything] (http://www.voidtools.com/) и [UltraSearch] (http://www.jam-software.com/ultrasearch/), также анализируют MFT (и в некоторых случаях журнал USN) непосредственно. Тем не менее, обходные ACL-списки - причина № 1, по которой вы больше не пользуетесь. afrazier 10 лет назад 1

Похожие вопросы