2

目前,我的数据被组织在一个具有缓存目录的卷中(首先创建或传输所有文件)。之后,卷上有合适的目录,这些目录在其子目录中包含硬链接到缓存中文件的文件。这样做是为了使同一个 inode(文件)可以在多个目录中多次硬链接。

现在,当尝试清理卷时,我递归地遍历目录(而不是缓存)并基于某些标准,取消链接文件(这基本上将缓存条目的 inode 计数减少了 1)。当我删除最后一个硬链接(将计数从 2 减少到 1)时,有没有办法让我直接删除缓存条目。这样我就不必手动解析整个缓存目录来清除其中的任何 inode,这些 inode 的链接计数仅为 1。

我已经完成了取消链接/删除功能,但找不到任何特定的用途。是否有一些清除算法在内部处理这个问题,然后我可以尝试实现它。

对此的任何帮助将不胜感激。期待及时回复。

4

2 回答 2

2

我看到了这个和其他一些地方,它们指导您如何从 shell 中删除所有硬链接(使用 find -samefile 并在每个文件上调用 remove )。您可以通过系统调用它,尽管某些人可能不赞成这样做)。

于 2011-04-12T09:23:42.347 回答
1

不,没有任何东西可以开箱即用。

在取消链接硬链接并注意到链接计数为 1 时执行删除可能很有用,因为此时 inode 应该在页面缓存中;这当然取决于知道缓存目录中的文件名。

于 2011-04-12T09:54:49.803 回答