EFUtool creates and updates EFU file indexes for loading into Everything search tool. The main addition of EFUtool is a fast "update mode" which rescans a given volume/share for changes only, instead of doing a full scan everytime. This update mode is about 7x faster than the native EFU indexer in Everything, when indexing network shares, and greatly reduces the I/O load on the storage units.
Benchmarks
Scanning a group of network shares with about 60 TB in 12 million files, 500 thousand folders:
Tool | Operation | Runtime | Comment |
---|---|---|---|
Everything UI | Folder Index Rescan | 15:48:04 | |
Everything CLI | Create EFU index | 03:40:06 | 4x faster than Folder Index |
EFUtool | Create EFU index | 03:41:21 | similar to Everything CLI |
EFUtool | Update EFU index | 00:29:45 | 32x faster than Everything GUI, 7x faster than Everything CLI |
EFUtool can also take include/exclude filters to fine tune what is included in the index. This further allows removal of files/folders that do not need to be indexed, making the indexes smaller and faster to lookup by Everything.
For volumes/shares with millions of files Everything's Folder Indexing is much slower than EFU indexing (see this thread). This issue may be resolved in a future version, bringing Folder Indexing speed to the same level as EFU creation. EFUtool update-mode is still much faster, and thus worthwhile.
UPDATE: David Carpenter from VoidTools found that the slower "Folder Index Rescan" is caused by Everything running it in a lower priority thread. To bring it in line with the "Create EFU Index" runtimes, just set folder_update_thread_mode_background=0 in Everything's config file.
Download (x64 binary): Latest Release
Requires .Net Framework 4.6.2 or above which supports Long File Paths (longer than 260 chars)
Command line syntax
EFUtool <[path\]index.EFU> [<root1> ... <rootN>] [options]
Options
-i <mask> : include files/dir mask
-x <mask> : exclude files/dir mask
-f : filter EFU file (no folder update/scan)
-s : print EFU file statistics/info
-p : suppress progress indication (for logging to file)
-a : save the used include/exclude args in EFU file
- Multiple -i and -x switches can be used
- mask pattern can include * and ? for regular filemask syntax
- mask pattern can start with 'regex:' to use c# style regex matching
- -i and -x can also be used in statististics and filter modes
- -a option allows you to update the EFU using the saved args
Examples
Create a new EFU file with index of RootPath1 and RootPath2:
EFUtool index.efu RootPath1 RootPath2
Create a new EFU file with index of RootPath1, excluding 'Users' folder:
EFUtool index.efu RootPath1 RootPath2 -x \users\
Note that any include/exclude options provided during EFU creation should still be used when updating that EFU, to prevent the excluded items from being added back
Update an existing EFU file - rescan all included folders:
EFUtool index.efu
Update an existing EFU file - rescan only RootPath2, exclude EXE files:
EFUtool index.efu RootPath2 -x *.exe
Update an existing EFU file - add JPG files from RootPath3:
EFUtool index.efu RootPath3 -i *.jpg
Filter out RootPath2\ from EFU file:
EFUtool index.efu -f -x RootPath2\
Filter out all TMP files and TEMP folders from EFU file:
EFUtool index.efu -f -x *.tmp -x \TEMP\
Filter out all except JPG files of RootPath1 from EFU file:
EFUtool index.efu -f -i RootPath1\*.jpg
Print statistics for EFU file:
EFUtool index.efu -s
Print statistics for TMP files on EFU file:
EFUtool index.efu -s -i *.tmp
Print statistics for RootPath1 except TMP files:
EFUtool index.efu -s RootPath1 -x *.tmp