updatedb 如何通过避免进行全盘扫描(也许不是 mtime)来快速运行

updatedb 如何通过避免进行全盘扫描(也许不是 mtime)来快速运行

updateb 如何通过避免进行全盘扫描而运行得非常快?由于父文件夹的 mtime 不受子文件夹中文件的影响。

为什么updatedb程序运行这么快?

@hugomg 我认为实际上并没有。它应该只更改其直接父级的 mtime。 – @Kusalananda

我搜索过但找不到答案。

答案1

当第一次运行时updatedb,无法避免扫描每个目录。

但在随后的扫描中,如果目录与数据库mtime中的旧条目相比没有变化locate,则没有新文件,也没有新的子目录 - 因此不必扫描整个目录,updatedb只需使用其旧数据库即可了解任何现有子目录的名称-目录。因此它可以直接检查mtime这些子目录的 s,并对它们应用相同的规则。

换句话说,如果文件系统自上次updatedb运行以来没有发生变化,那么唯一updatedb需要做的就是确认stat()其数据库中已有的每个目录条目,并检查其mtime是否保持不变。

只有mtime已更改的目录才需要完整目录扫描:这将发现任何新的、重命名或删除的文件、链接和子目录。如果发现新的/重命名的子目录,也需要对其进行全面扫描。

相关内容