更新用于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而是用户的私有数据库:
注意,所有可以读取db_file文件的用户都可以得到source_directory目录的目录结构。
相关手册
locate(1), mlocate.db(5), updatedb.conf(5)
参考文献
- man 8 updatedb, Version updatedb (mlocate) 0.26
更新日志
- 08/06/2018 创建文章