问题描述
我想在我的 Ubuntu 服务器上使用 mlocate ,但只索引某些目录(例如 /home
和 /data
,但不是 /
下的所有内容)。但是,mlocate 的标准配置以相反的方式工作;您指定要删除的路径(使用 PRUNE_PATHS
)。
有没有什么简单的方法可以实现这一点,或者有什么类似的实用程序可以满足我的要求?(注意:它应该维护一个像 mlocate
这样的索引,因此 find
是不可接受的)谢谢。
最佳方法
编辑文件 /etc/updatedb.conf
将 PRUNEPATHS
设置为您不想搜索的目录
PRUNEPATHS="/tmp /var/spool /media"
PRUNEPATHS
:whitespace-separated 不应由 updatedb 扫描的目录路径名列表。每个路径名必须与目录由locate报告的形式完全一致。默认情况下,不会跳过任何路径。
请注意,所有上述配置信息也可以通过实用程序 updatedb
的命令行选项进行更改或更新。
次佳方法
您可以使用 -U 选项(–database-root PATH)
updatedb -l 0 -U /home/user/music -o /home/user/databasefile
-o 写入输出文件
-l 0 表示你可以读取它,否则它只能由locate访问
然后你就可以像这样使用它:
locate -d /home/user/databasefile Dylan
-d 设置数据库路径
要将 mlocate 与多个根目录一起使用,只需创建两个数据库文件,然后使用带有两个数据库路径选项的locate,如下所示:
locate -d /home/user/dbfile1 -d /home/user/dbfile2 searchstring
总结一下并更具体地回答这个问题:
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