Make it possible to exclude directories by name no matter where they

are in the filesystem from the locate database.  By default, exclude
".zfs" directories, as users who who have set snapdir=visible and are
taking frequent snapshots most likely do not want the snapshots
included in the locate database.
This commit is contained in:
Garrett Wollman 2010-10-31 02:36:05 +00:00
parent 2eeee67ce8
commit 6f8b6f9469
2 changed files with 13 additions and 1 deletions

View File

@ -15,9 +15,12 @@
# directories to be put in the database
#SEARCHPATHS="/"
# directories unwanted in output
# paths unwanted in output
#PRUNEPATHS="/tmp /usr/tmp /var/tmp /var/db/portsnap"
# directories unwanted in output
#PRUNEDIRS=".zfs"
# filesystems allowed. Beware: a non-listed filesystem will be pruned
# and if the SEARCHPATHS starts in such a filesystem locate will build
# an empty database.

View File

@ -52,6 +52,7 @@ PATH=$LIBEXECDIR:/bin:/usr/bin:$PATH; export PATH
: ${FCODES:=/var/db/locate.database} # the database
: ${SEARCHPATHS:="/"} # directories to be put in the database
: ${PRUNEPATHS:="/tmp /usr/tmp /var/tmp /var/db/portsnap"} # unwanted directories
: ${PRUNEDIRS:=".zfs"} # unwanted directories, in any parent
: ${FILESYSTEMS:="$(lsvfs | tail -n +3 | \
egrep -vw "loopback|network|synthetic|read-only|0" | \
cut -d " " -f1)"} # allowed filesystems
@ -79,6 +80,14 @@ case X"$PRUNEPATHS" in
done;;
esac
case X"$PRUNEDIRS" in
X) ;;
*) for dir in $PRUNEDIRS
do
excludes="$excludes -or -name $dir -type d -prune"
done;;
esac
tmp=$TMPDIR/_updatedb$$
trap 'rm -f $tmp; rmdir $TMPDIR' 0 1 2 3 5 10 15