我有一个奇怪的问题,我不确定这是否可行,这就是为什么我向超级用户询问它:)
因此,想象一下您的文件系统有一些用于附加分区的挂载点。
说一些类似
/驱动器/驱动器A/分区A /驱动器/驱动器A/分区B /驱动器/驱动器B/分区A ... 等等。
现在,如果所有这些分区都安装在各自的安装点上,则运行 updatedb 将索引其文件系统中的所有内容。很好。
现在,我正在尝试建立一种低消耗、低硬盘磨损的文件服务器,我想使用自动挂载,我想对文件进行索引,但我不想每天在这些额外的驱动器上运行索引。
所以我想要实现的是以这样一种方式运行 updatedb,即某些路径(在我的情况下是上面的那些路径)可以从索引中排除,但同时不会破坏为这些路径索引的先前内容。
我看到 updatedb 有几个“修剪”选项,让我们可以从索引过程中排除某些路径。但这也意味着丢弃与这些路径相关的所有内容信息。相反,我想排除某些路径,保留这些路径中之前已经索引的内容。
有人知道如何使用 mlocate 实现这一点吗,或者可以使用其他什么工具来实现这一点?谢谢
答案1
创建多个索引
使用 mlocate 同时搜索多个数据库文件。首先,您要排除的任何内容都不应被扫描。忘记已安装与未安装的排除规则,并为重要位置创建索引。
所提供的示例可以轻松地应用到您的情况中...
一般来说,您可以使用 创建多个索引文件,然后按updatedb
您想要的频率同时或逐个更新它们(例如crond
,通过)。
如果存在全局的 /etc/updatedb.conf,那么排除具有自己索引的路径可能是明智的 - 因为多次扫描(创建索引)同一位置将在扫描(搜索)同一位置时产生多个结果。
为所有位置创建二进制“字典”后,在 shell 中配置一个函数;
函数 fooLocate { 在 /usr/bin/定位 \ -d /var/tmp/default.mlocate.db \ -d /my-stuff/mlocate-index2.db $@ }
相关文件
(man updatedb
也做一个)
人定位*滚动滚动滚动*
-d,--数据库 DBPATH 用 DBPATH 替换默认数据库。DBPATH 是一个以 : 分隔的列表, 数据库文件名。(...) 空数据库文件名将被默认数据库替换。数据库 文件名 - 指标准输入。请注意,数据库可以读取 仅从标准输入获取一次。
例子
# updatedb -o /home/jaroslav/.locate/media-music.db -U /mnt/media/media/ \ -n 图像 \ -n 电影 \ -n steamapps \ -n pr0n -v # 定位 -i glass -d /home/jaroslav/.locate/media-music.db| wc -l 三十五 # 定位 -i glass -d /home/jaroslav/.locate/media-music.db \ -d /var/lib/mlocate/mlocate.db | wc -l 363