我注意到当我按名称搜索文件时(在 Windows 或 Linux 中),它通常是一个磁盘密集型过程,尤其是在 Windows 中。该实用程序(Windows 搜索,或 Cygwin 中的“查找”)似乎会扫描整个目录树,逐个考虑每个文件。
我想知道,为什么不将主文件表(或等效的,如果不是 NTFS)加载到内存中并纯粹在内存中解析它?我想这类似于 Windows 搜索、Google 桌面搜索和 Spotlight 等更现代的搜索所维护的索引,但即使是这些也是间接的。我猜文件系统通常不会将其元数据提供给外部程序?
我无法证明搜索尚未基于 MFT,但根据它的运行方式似乎不太可能。
有一些程序会在 Windows NTFS 卷上使用 MFT 进行搜索,例如开源项目:
http://sourceforge.net/projects/swiftsearch/
http://sourceforge.net/projects/ntfs-search/
它们非常快,但问题是一旦您开始直接使用 MFT,您就会绕过安全 ACL 和 shell 扩展等功能。因此,大多数这些程序需要以提升的权限运行,并且不一定会产生与基于 API 的搜索相同的结果。
归档时间: |
|
查看次数: |
4605 次 |
最近记录: |