我在这里所说的“独特性”也是关于时间的。
首先,我使用inode来识别一个文件,不同inode的文件是不同的,一个文件在它的生命周期中总是有一个固定的inode,即使它被移动和触摸。
但是,inode可以被操作系统重用。如果文件A.txt有inode 22345,如果我删除A.txt并创建B.txt,那么B.txt可能在ode 22345中。
如果有创建文件的时间呢?这样我就可以使用inode+creation-time来识别文件系统历史记录中的一个文件。但linux并没有提供这方面的支持。
我也尝试过inode+file_md5,但是如果A.txt和B.txt有相同的con怎么办?
那么,你有什么想法吗?
===========编辑===========
我的场景是一种日志文件收集。在日志目录中,可能会创建、移动和删除日志文件。我们使用从文件偏移到时间戳的映射来做一些“检查点”,比如工作。那么,如何污损刚才提到的“文件”呢?
发布于 2012-11-01 07:30:51
通常,除了inode编号之外,第一个文件还会比较设备编号,因为两个不同文件系统上的两个文件可能具有相同的inode编号。
无论如何,比较inode/dev编号是回答“这两个文件描述符引用同一个文件吗?”问题的一种方法。注意问题中“文件描述符”而不是“路径”的用法,这避免了如果路径随后在stat()之后以及在比较inode/dev号之前被删除的话。正如您自己指出的,inode编号只有在它们具有活动引用(路径的和/或它们是由某个进程打开的)时才是唯一的。
在您的例子中,我想一种解决方案是跟踪您感兴趣的文件的inode/dev号,如果文件被删除,则从列表中删除。虽然我不知道你到底想做什么。
https://stackoverflow.com/questions/13172534
复制相似问题