我如何更改 /var/lib/mlocate.db 的存储位置?

我如何更改 /var/lib/mlocate.db 的存储位置?

对于我来说这是一个很大的文件,我想把它放在与根分区不同的硬盘上。

补充一下:我希望它能用于 updatedb 的自动运行。我查看了 updatedb.conf 的手册页,但找不到任何可以让我更改路径的内容。

答案1

您可以检查您的 updatedb 版本是否支持--output FILE参数并使其成为您的 bash 会话的别名并在您的 cron 作业中指定它。

还必须使用带--database FILE参数的定位

正如 evencoil 所述,不可能使用符号链接,因为 updatedb 会在每次调用时重新创建文件。

答案2

在 Ubuntu 中,默认数据库位置已编译到mlocate二进制文件中,因此很难更改。您可以设置 LOCATE_PATH 变量,但其中提到的数据库文件将仅用作附加数据库,而不是默认数据库。

解决方法 - 您的.db文件有多大?在我的系统上是 5 MiB,这真的有问题吗?通过这种方式修剪一些您不需要搜索的路径locate(参见man updatedb.conf)并使文件更小不是更容易吗?

答案3

虽然创建链接mlocate.db不起作用,但现代系统(例如 Debian jessie)将数据库存储在目录中,您可以轻松将其符号链接到另一个位置。因此,您可以/var/lib/mlocate按如下方式将目录链接到另一个驱动器。

test -d /var/lib/mlocate &&
rm -rf /var/lib/mlocate &&
mkdir /large-disk/mlocate &&
ln -s /large-disk/mlocate /var/lib/mlocate &&
echo OK

答案4

只需使用符号链接想到了。

  1. 移至mlocate.db其他驱动器,假设它最终位于/some/path/mlocate.db
  2. 转到正确的文件夹

    cd /var/lib
    
  3. 创建符号链接

    ln -s /some/path/mlocate.db mlocate.db
    

请注意我还没有测试过这,但背后的原因对我来说听起来足够正确。如果它没有按预期运行,只需通过删除符号链接并将实际文件移回其位置来恢复您的操作。

相关内容