NAME¶
mlocate.db - a mlocate database
DESCRIPTION¶
A mlocate database starts with a file header: 8 bytes for a magic number (
"\0mlocate" like a C literal), 4 bytes for the
configuration block size in big endian, 1 byte for file format version
(
0), 1 byte for the “require visibility” flag (
0
or
1), 2 bytes padding, and a NUL-terminated path name of the root of
the database.
The header is followed by a
configuration block, included to ensure
databases are not reused if some configuration changes could affect their
contents. The size of the configuration block in bytes is stored in the file
header. The configuration block is a sequence of
variable assignments,
ordered by variable name. Each
variable assignment consists of a
NUL-terminated variable name and an ordered list of NUL-terminated values. The
value list is terminated by one more
NUL character. The
ordering used is defined by the
strcmp () function.
Currently defined variables are:
- prune_bind_mounts
- A single entry, the value of PRUNE_BIND_MOUNTS; one of the strings
0 or 1.
- prunefs
- The value of PRUNEFS, each entry is converted to uppercase.
- prunepaths
- The value of PRUNEPATHS.
The rest of the file until
EOF describes directories and their
contents. Each directory starts with a header: 8 bytes for
directory
time (seconds) in big endian, 4 bytes for
directory time
(nanoseconds) in big endian (0 if unknown, less than 1,000,000,000), 4 bytes
padding, and a NUL-terminated path name of the the directory. Directory
contents, a sequence of
file entries sorted by name, follow.
Directory time is the maximum of
st_ctime and
st_mtime of
the directory.
updatedb(8) uses the original data if the
directory
time in the database and in the file system match exactly.
Directory
time equal to 0 always causes rescanning of the directory: this is
necessary to handle directories which were being updated while building the
database.
Each
file entry starts with a single byte, marking its type:
- 0
- A non-directory file. Followed by a NUL-terminated file (not path) name.
- 1
- A subdirectory. Followed by a NUL-terminated file (not path) name.
- 2
- Marks the end of the current directory.
locate(1) only reports file entries, directory names are not reported
because they are reported as an entry in their parent directory. The only
exception is the root directory of the database, which is stored in the file
header.
AUTHOR¶
Miloslav Trmac <mitr@redhat.com>
SEE ALSO¶
locate(1),
updatedb.conf(5),
updatedb(8)