目前,我的数据被组织在一个具有缓存目录的卷中(首先创建或传输所有文件)。之后,卷上有合适的目录,它们的子目录中包含硬链接到缓存中文件的文件。 这样做是为了在多个目录中多次硬链接相同的inode(文件)。
现在,在尝试清理卷时,我反复地浏览目录(而不是缓存)并根据某些标准取消链接文件(这基本上将缓存条目的inode计数减少了1)。当我删除最后一个硬链接(即将计数从2减少到1)时,我有没有办法直接删除缓存条目。这样我就不必手动解析整个缓存目录来清除它的任何inode,其链接数只有1。
我已经完成了取消链接/删除功能,但找不到任何具体的使用方法。是否有一些清除算法在内部处理这个问题,然后我可以尝试实现它。
对此的任何帮助都将受到高度赞赏。期待迅速回复。
答案 0 :(得分:2)
我看到了this以及其他一些指示您如何从shell中删除所有硬链接的地方(使用find -samefile并在每个文件上调用remove)。你可以通过系统调用它,虽然这可能会让一些人不满意。)
答案 1 :(得分:1)
不,没有任何东西可以满足您的需求。
在取消链接硬链接并注意到链接计数为1时执行删除可能很有用,因为此时inode应该在页面缓存中;这当然取决于知道缓存目录中文件的名称。