Skip to content

EFU file update tool for Everything indexer

License

Notifications You must be signed in to change notification settings

zybexXL/EFUtool

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EFUtool - Fast EFU indexer tool for Everything

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
    -np       : no progress indication (for logging to file)
    -na       : no-args, don't save the command-line args in EFU file
    -d <n>    : set maximum scan folder depth
  • 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
  • options -i and -x can also be used in statististics and filter modes

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 are saved into the EFU file, and will be reused when updating that EFU to prevent the excluded items from being added back. However if you use -na option the options are not preserved so you need to provide them again when updating an EFU.


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