如何让 mlocate 仅索引某些目录?

And*_*ier 23 search find locate

我想在我的 Ubuntu 服务器上使用mlocate,但只能索引某些目录(例如/home/data,但不是 下的所有内容/)。但是,mlocate 的标准配置则相反;您指定要删除的路径(使用PRUNE_PATHS)。

有没有什么简单的方法可以实现这一点,或者任何类似的实用程序可以满足我的要求?(注意:它应该维护一个像 那样的索引mlocate,所以find是不可接受的,例如)谢谢。

Lnx*_*lck 23

编辑文件 /etc/updatedb.conf

设置PRUNEPATHS您不想搜索的目录

PRUNEPATHS="/tmp /var/spool /media"
Run Code Online (Sandbox Code Playgroud)

PRUNEPATHS:以空格分隔的目录路径名列表,updateb 不应扫描这些目录。每个路径名都必须与 locate 报告目录的格式完全一致。默认情况下,不会跳过任何路径。

请注意,上述所有配置信息也可以通过实用程序的命令行选项进行更改或更新updatedb


Jan*_*hou 17

您可以使用 -U 选项(--database-root PATH)

updatedb -l 0 -U /home/user/music -o /home/user/databasefile
Run Code Online (Sandbox Code Playgroud)

-o 写入输出文件

-l 0 表示你可以读取它,否则它只能被定位访问

然后你可以像这样使用它:

locate -d /home/user/databasefile Dylan
Run Code Online (Sandbox Code Playgroud)

-d 设置数据库路径

要对多个根目录使用 mlocate,只需创建两个数据库文件,并使用带有两个数据库路径选项的 locate,如下所示:

locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring
Run Code Online (Sandbox Code Playgroud)

总结一下,回答更具体的问题:

updatedb -l 0 -U /home -o /home/user/home_dbfile
updatedb -l 0 -U /data -o /home/user/data_dbfile
locate -d /home/user/home_dbfile -d /home/user/data_dbfile Dylan
Run Code Online (Sandbox Code Playgroud)