【发布时间】:2012-11-01 07:10:14
【问题描述】:
我这里所说的“独特性”也与时间有关。
- 每次在文件系统上创建一个文件,都有一个唯一的文件。
- 同一目录下同名但出现时间不同的文件 阶段不同。
- “唯一”的定义与文件内容无关。
首先,我使用 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的内容相同呢?
那么,你有什么想法吗?
===========编辑===========
我的场景是一种日志文件收集。在日志目录中,可以创建、移动和删除日志文件。我们使用从文件偏移量到时间戳的映射来做一些“检查点”之类的工作。那么如何玷污刚才提到的“文件”呢?
【问题讨论】:
-
如果具有相同的内容不会使它们成为相同的文件,那是什么?我可以想象这个问题的答案,但我认为你需要澄清一下。
-
如果 A.txt 是指向 B.txt 的硬链接,您会将它们解释为不同的文件吗?
-
如果文件 A.txt 已更新(写入附加)它是您定义中的新文件?
-
我假设如果文件具有相同的 inode 相同的内容相同的名称和相同的 mtime 它是您定义中的 uniq 文件
-
感谢您的澄清。我想我应该问,为什么你需要使用这个独特的定义?该问题被标记为 inotify;您是否担心涉及过时的 inotify 事件的竞争条件?