「updatedb(8)」-

更新用于mlocate命令的数据库

命令语法格式

updatedb [OPTION]…

命令描述

命令updatedb创建或更新locate(1)使用的数据库。如果数据库已存在,则重复使用其数据,以避免重新读取未更改的目录。

命令updatedb通常由cron(8)每天运行,来更新默认数据库。比如,在Debian中/etc/cron.daily的mlocate脚本,由cron(8)每天运行一次来更新数据库。

命令支持的选项及含义

-o, –output FILE
将数据库写入FILE文件,而不是使用默认数据库。

-l, –require-visibility FLAG
将生成的数据库中的“在报告之前需要文件可见性”标志设置为FLAG。

如果FLAG为“0”或“no”,或者数据库文件可被“other”读取,或者它不归mlocate所有,则即使运行locate(1)的用户无法读取必要的目录,该用户也会通过locate(1)输出数据库条目来找出数据库条目描述的文件。

如果FLAG为“1”或“yes”(默认值),则locate(1)会在将每个条目的父目录报告给调用用户之前,会检查它们的权限。为了使文件的存在真正地对其他用户隐藏,将数据库组设置为“mlocate”,数据库权限禁止用户使用除locate(1)之外的其他方法读取数据库文件,通过给mlocate设置SGID权限。

请注意,仅当数据库由”mlocate“组拥有,且“other”不可读时,才会检查可见性标志。

覆盖配置文件

变量PRUNE_BIND_MOUNTS,PRUNEFS,PRUNENAMES和PRUNEPATHS会被一些选项修改,在手册updatedb.conf(5)中有详细记录。

-f, –add-prunefs FS
将以空格分隔的列表FS中的条目添加到PRUNEFS中。

-n, –add-prunenames NAMES
将以空格分隔的列表NAMES中的条目添加到PRUNENAMES中。

-e, –add-prunepaths PATHS
将以空格分隔的列表PATHS中的条目添加到PRUNEPATHS中。

-U, –database-root PATH
扫描以PATH为根目录的文件系统子树,并将结果保存到数据库中。默认情况下扫描整个文件系统。

命令locate(1)以绝对路径名输出条目,不包含符号链接,不管PATH的形式如何。

–prune-bind-mounts FLAG
设置PRUNE_BIND_MOUNTS为FLAG,覆盖配置文件。

–prunefs FS
设置PRUNEFS为FS,覆盖配置文件。

–prunenames NAMES
设置PRUNENAMES为NAMES,覆盖配置文件。

–prunepaths PATHS
设置PRUNEPATHS为PATHS,覆盖配置文件。

增加输出信息

–debug-pruning
向标准错误中写入有关修剪(pruning)决策的调试信息。

-v, –verbose
一旦找到文件,就将文件输出到标准输出。

其他选项

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

注意事项

随附的locate(1)实用程序旨在与slocate兼容,并尝试尽可能与GNU实现的locate兼容。对于updatedb,情况并非如此。

使用”–require-visibility no“构建的数据库允许用户查找数据其他用户的文件和目录,除此之外他们无法做到查找其他用户的文件或者目录。

相关文件

/etc/updatedb.conf
与updatedb有关的配置文件。参考updatedb.conf(5)手册。

/var/lib/mlocate/mlocate.db
默认更新的数据库文件。

退出状态

在成功时返回退出状态“0”;在出错时返回“1”。

使用示例

如果要创建不属于root而是用户的私有数据库:

# updatedb -l 0 -o db_file -U source_directory

注意,所有可以读取db_file文件的用户都可以得到source_directory目录的目录结构。

相关手册

locate(1), mlocate.db(5), updatedb.conf(5)

参考文献

  • man 8 updatedb, Version updatedb (mlocate) 0.26

更新日志

  • 08/06/2018 创建文章