根据 inode 比较两个目录

根据 inode 比较两个目录

我认为与适当的解决方案相关的一些背景:

我有一个有两个文件夹的服务器;一个是摄取,另一个是排序。排序文件夹的来源是摄取文件夹,所有目录都是唯一的,所有文件都是硬链接。

这样做的结果是,当摄取文件夹中删除了文件时,该文件仍保留在已排序的文件夹中,反之亦然。这使得清理几乎不可能,因为有数十万个文件,总计约 40 TB。

我有一个脚本将所有链接及其索引节点和路径名添加到数据库。然后我可以使用一些 SQL 来查找只出现一次的索引节点,并决定是否要删除它们。

这个解决方案非常慢(每次我想管理它时都需要刷新整个数据库)并且相当笨重(需要运行查询,然后通过 CLI 手动删除文件)。

是否有像 ncdu 或任何双窗格文件浏览器这样的解决方案可以显示 inode,并专门过滤 inode 的链接数量(如所示stat)?

答案1

为什么不直接ls -li对两个目录上的文件进行操作,然后对其进行比较?

答案2

我现在习惯于find . -type f -links +1获取具有多个链接的所有文件,然后用于sed使所有链接成为绝对链接,然后ncdu -X list.txt扫描除列出的文件之外的任何文件。

这个解决方案仍然很慢,我正在寻找一个更好的解决方案,但它确实已经大大改进了我的流程,所以我将其发布为答案

相关内容