gpt4 book ai didi

linux - linux中如何判断一个文件的唯一性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:00:30 25 4
gpt4 key购买 nike

这里所说的“唯一性”,也与时代有关。

  • 每次在文件系统上创建一个文件时,都会有一个唯一的文件。
  • 同一目录下同名但出现时间不同的文件阶段不同。
  • “独特”的定义与文件内容无关。

首先,我用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 10怎么办?

那么,你有什么想法吗?

===========编辑===========

我的场景是一种日志文件收集。在日志目录中,可以创建、移动和删除日志文件。我们使用从文件偏移量到时间戳的映射来做一些“检查点”之类的工作。那么如何玷污刚才说的"file"呢?

最佳答案

通常除了 inode 号外,还会比较设备号,因为两个不同文件系统上的两个文件可能具有相同的 inode 号。

无论如何,比较 inode/dev 编号是回答“这两个文件描述符是否引用同一个文件?”这个问题的一种方式。请注意问题中使用的是“文件描述符”而不是“路径”,如果路径随后在其中的 stat()'之后和比较 inode/dev 编号之前被删除,则可以避免竞争。正如您自己指出的那样,只要 inode 编号具有事件引用(路径和/或它们被某个进程打开),就可以保证它们是唯一的。

对于您的情况,我想一种解决方案是跟踪您感兴趣的文件的 inode/dev 编号,如果文件被删除,则从列表中删除。尽管我不确定您真正想要完成什么。

关于linux - linux中如何判断一个文件的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13172534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com