我需要创建(很多)文件,其唯一目的是通过它们的存在来表示布尔条件。这些文件没有内容,它们的访问/修改时间或所有权无关紧要。只有他们的存在才重要。
我认为最便宜和最快的方法是创建到文件系统中某个固定目标的硬链接。
硬链接最大计数(我认为在 ext4 上 = 64000)存在一些不便,但我可以通过编写一个循环来使用可变目标来解决这个问题。
有没有更简单的方法,也许使用硬链接以外的东西来做我想做的事?
谢谢。
Maildir 格式是有用的 Unix 模式的一个很好的参考。如果您的标记引用其他文件或目录,您可以将它们嵌入到文件名中,因为标志会添加到 Maildirs 中的邮件文件中。添加和删除标志是健壮的,因为文件重命名在 POSIX 中是原子的,即使在重新启动时也是如此。它还避免了标记文件的额外 i 节点,并且与原始硬链接解决方案一样节省空间。
例如,没有somefile
然后创建一个空的somefile.marker
,只需重命名somefile
为somefile:M
. 要删除标记,而不是删除somefile.marker
,只需重命名somefile:M
回somefile
. 对目录也可以这样做。