Switching to Linux - NEED EVERYTHING!

Plug-in and third party software discussion.
Post Reply
smgolden
Posts: 1
Joined: Sat Feb 17, 2024 2:56 pm

Switching to Linux - NEED EVERYTHING!

Post by smgolden »

Void,

I'm switching to Zorin OS 17 Linux (Debian-based) as I simply cannot abide Windows 11. They're making it too Mac-like and removing features I've used for decades (since the mid-90s, actually). There are two issues that are making the switch painful. One is the lack of Everything for search. There is NOTHING that comes close to the power and yet simplicity of VoidTools Everything! I've read today that a Linux version is on you to-do list.

If it will help move the project along, I will pay $50 (perhaps more) for a functional Linux version of Everything.

I'm running a dual-boot of Windows 10 and Zorin using Grub2Win. That means both operating systems share my data and backup drives. I can bring Everything up through WINE in Linux, but Everything simply doesn't recognize the Linux etx4 drives. It sees my Windows NTFS data and backup drives, but doesn't properly index them.

Any word on when we can expect a Linux version?

Sincerely,

smgolden
IamDan
Posts: 1
Joined: Mon Mar 18, 2024 5:07 pm

Re: Switching to Linux - NEED EVERYTHING!

Post by IamDan »

The tool you want is GNU locate.

Every GUI distro I've used either has it pre-installed or available. If it isn't pre-installed, you'll may have to configure how the db updates. Memory says the first time is slow, after that fast.
smgolden
Posts: 1
Joined: Sat Feb 17, 2024 2:56 pm

Re: Switching to Linux - NEED EVERYTHING!

Post by smgolden »

Actually, I installed Everything on Windows 10 in a VirtualBox. Everything is working GREAT!

Thanks for the tip on GNU Locate. For Ubuntu, it's seems to just be called "Locate." After being accustomed to Everything for years, Locate's not going to be optimal for me. However, I've got Everything set up to find files, documents, and contents, as appropriate on my Windows drives as well as my Linux drive.

Here's my setup:
Linux VirtualBox Share Definitions
Folder Name: Crucial1000
Folder Path: /media/<linuxusername>/Crucial1000
Mount point: \\VBOXSVR\Crucial1000

Folder Name: Win10
Folder Path: /media/<linuxusername>/Win10/Users/<winusername>
Mount point: \\VBOXSVR\Win10/Users/<winusername>

Folder Name: Documents
Folder Path: /home/<linuxusername>/Documents
Mount point: \VBOXSVR\Zo

For each mount point defined, I created a corresponding directory, or directory path on the Virtual Windows 10 C:\ drive.
VirtualBox creates the drive letters in the Virtual Windows 10 system corresponding to the VirtualBox shares.

Everything Indexing
Tools > Options > Indexes

Drives and Folders currently indexed:
NTFS: C:\ (by Everything default)
Folders (and Shared Drives, as they appear in Win10 VirtualBox from Everything's view):
Y:\Documents (Linux Zorin Drive)
Z:\Dropbox ---Crucial1000 (Former Windows Data Drive)
Z:\Htdocs ---Crucial1000 (Former Windows Data Drive)
Z:\MDocuments ---Crucial1000 (Former Windows Data Drive)
Z:\MyDocuments ---Crucial1000 (Former Windows Data Drive)
Z:\MyHeritage ---Crucial1000 (Former Windows Data Drive)
U:\Downloads ---Windows10Native (Windows 10 Native OS Drive)
U:\Documents ---Windows10Native (Windows 10 Native OS Drive)
U:\Dropbox ---Windows10Native (Windows 10 Native OS Drive)
U:\OneDrive ---Windows10Native (Windows 10 Native OS Drive)

Tools > Options > Content
Index File Content
Include only folders:
Z:\Dropbox;Z:\Htdocs;Z:\MDocuments;Z:\MyDocuments;C:\Users\<winusername>\Documents;U:\Documents;U:\My Documents;U:\Downloads;U:\Dropbox;U:\OneDrive;Y:\

Content being included in the scan:

*.doc;*.docx;*.txt;*.odt;*.ppt;*.odp

Thanks for creating such an AWESOME product as Everything! There's just nothing comparable in the Linux realm.
Last edited by smgolden on Tue Mar 19, 2024 12:40 am, edited 6 times in total.
nosoop4u
Posts: 2
Joined: Mon Jun 29, 2020 7:04 pm

Re: Switching to Linux - NEED EVERYTHING!

Post by nosoop4u »

I have a script that I wrote that generates an Everything EFU filelist on my Linux servers, once a day in the middle of the night. This creates much less stress than having the Everything client on a Windows PC access these folders as NFS or SMB shares, as the search/index traffic is all local (e.g., about 2m to process a 4TB folder with 120,000 files).

Then my client Windows PC has these file lists configured under Options/Indexes/File Lists.

Some gotchas/tricks I found:
(1) when generating the file list, convert the path to the UNC share name, so that I can click on the files in Everything to access them. This is basically just mapping (for example) /mnt/share on the server to \\server\share in the filelist.
(2) convert forward slashes to backslashes for Windows
(3) convert quotes as needed
(4) use [stat -c "%N,%s,%y,%w,%a" <filename>] to gather file data in EFU format, not ls
(5) replace the space in between the date/time output with a "T" because that's how Everything likes its timestamp format.
(6) if your server is using ZFS and snapshots, make sure snapdir/snapdev options are set to hidden for each dataset
fireant
Posts: 10
Joined: Thu Oct 13, 2016 8:15 am

Re: Switching to Linux - NEED EVERYTHING!

Post by fireant »

Can you share the script? Would like to try this out.
nosoop4u
Posts: 2
Joined: Mon Jun 29, 2020 7:04 pm

Re: Switching to Linux - NEED EVERYTHING!

Post by nosoop4u »

Yep. Just replace the following variables below with values that correspond to your environment.
  • BASELCL is the local BASE directory, typically the mountpoint of a ZFS pool, or the deepest path you can go and still be a parent of all your SMB shares.
  • BASERMT is the remote BASE path, typically the FQDN of the SMB server
  • SHARES are a list of datasets of the ZFS pool to index. These are mounted as subdirectories under BASELCL, and are the names of the SMB shares
The relationship between BASELCL and BASERMT is such that a file accessible locally on your server at <BASELCL>/<dataset1>/dir/file should be accessible at \\<BASERMT>\<dataset1>\dir\file. If your local file paths and SMB share names/paths don't match up that way, then you have some extra mapping to do.

Note I use ZFS in my environment, so this version is a little ZFS-specific (and I use ZFS terminology in my variable naming), but those bits should be able to be stripped out. You can rip out the DIRVIS and DEVVIS parts if not using ZFS. I use those to hide my snapshot directories when indexing (otherwise I have 20-30 copies of each file in the index!).

Here's the code. Just add the resulting EFU file UNC path under Options/Indexes/File Lists.

Code: Select all

#!/bin/bash

# Reference:
# - https://www.voidtools.com/support/everything/file_lists/
# - https://en.wikipedia.org/wiki/ISO_8601#Calendar_dates

BASELCL=/mnt/<ZFSPOOL>
BASERMT=<FQDN_of_SMB_server>
SHARES="<dataset1> <dataset2>"
OUTPUT=$( dirname "$0" )/$(hostname).efu

echo "Filename,Size,Date Modified,Date Created,Attributes" > ${OUTPUT}

for DIR in ${SHARES}
do
        echo "=== START [${DIR}] $(date)"
        SECONDS=0

        FULLDIR=${BASELCL}/${DIR}
        DATASET=$( echo ${FULLDIR} | sed 's#^/mnt/##' )
        DIRVIS=$( zfs get -Ho value snapdir ${DATASET} )
        DEVVIS=$( zfs get -Ho value snapdev ${DATASET} )

        echo ":-----> state prior to DB creation: snapdir=${DIRVIS}, snapdev=${DEVVIS}"

        [[ ${DIRVIS} == visible ]] && zfs set snapdir=hidden ${DATASET}
        [[ ${DEVVIS} == visible ]] && zfs set snapdev=hidden ${DATASET}

        find ${FULLDIR} | while read f; do stat -c "%N,%s,%y,%w,%a" "$f"; done |
        sed \
                -e "s#^\\x27${BASELCL}#\\x27\\\\\\\\${BASERMT}#" \
                -e 's#/#\\#g' -e 's#\x27#"#g' \
                -e 's#"\\""#\x27#g' \
                -e 's#\(-[0-3][0-9]\) \([0-2][0-9]:[0-5][0-9]:\)#\1T\2#g' >> ${OUTPUT}

                # explanation of SED parameters above
                # 1st line: convert leading local filename to SMB name
                # 2nd line: convert forward slash to backslash for Windows, convert single quote to double quote for Everything
                # 3rd line: convert cases of quoted quotes in the middle of file/dir names back to individual single quotes
                # 4th line: replace space between date/time with "T" for Everything

        if [[ ${DIRVIS} == visible ]] ; then
                echo ":-----> set snapdir back to ${DIRVIS}"
                zfs set snapdir=${DIRVIS} ${DATASET}
        fi

        if [[ ${DEVVIS} == visible ]] ; then
                echo ":-----> set snapdev back to ${DEVVIS}"
                zfs set snapdev=${DEVVIS} ${DATASET}
        fi

        echo "=== END>> [${DIR}] $(date) - ELAPSED: ${SECONDS}s"

done
voidv
Posts: 2
Joined: Tue Jul 09, 2024 6:24 am

Re: Switching to Linux - NEED EVERYTHING!

Post by voidv »

from windows OS to linux OS .. this is a big jump
not everything will be exactly the same in your 'comfort zone' when on windows OS

You can edit the config file for 'locate' to include and exclude files/dir from index. Alot more can be found on internet. Do a search.
Welcome to linux world. :mrgreen:
MarioMan
Posts: 1
Joined: Wed Aug 28, 2024 9:40 pm

Re: Switching to Linux - NEED EVERYTHING!

Post by MarioMan »

nosoop4u wrote: Tue Jun 25, 2024 5:35 pm Yep. Just replace the following variables below with values that correspond to your environment.
I just wanted to thank you for creating and sharing this script. I’ve been trying to find a suitable file indexer for TrueNAS, and this script, set as a cron job, integrates my NAS file share into Everything really easily. You should consider sharing this in the TrueNAS forums. I’m sure users there would appreciate it.
Post Reply