创建多个索引

创建多个索引

我有一个奇怪的问题,我不确定这是否可行,这就是为什么我向超级用户询问它:)

因此,想象一下您的文件系统有一些用于附加分区的挂载点。

说一些类似

/驱动器/驱动器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

相关内容