在 Linux 中检测文件移动或重命名的最佳方法?

2023-12-15

某些解决方案可能适用于 Windows,但是我不熟悉 Windows 操作系统,因此这将重点关注 Linux。

据我了解,Unix文件系统都有inode的概念,这是文件系统元数据和“文件”存储的地方。因此我想知道是否可以使用索引节点号和一些附加信息来跟踪重命名或移动的文件?

我建议做的是进行初始扫描,创建一个包含文件名/路径、其所在磁盘/驱动器、索引节点号以及最后某种校验和(sha-1)的数据库。

这将使系统能够使用索引节点号来快速检测文件是否被移动或重命名,然后它会跟进校验和来检查它是否实际上是同一个文件。

我可以看到这个方案可能存在一些问题:

  1. 文件可以被修改然后移动/重命名,并且这将无法检测到它,因为校验和不匹配。
  2. 一些(大多数?)应用程序在修改文件时会创建一个新的临时文件,然后将其与当前文件切换,因此即使文件最终未修改,索引节点也不会匹配......
  3. 需要存储它所在的设备/文件系统,因为每个文件系统上的索引节点对该文件系统来说是唯一的。
  4. 需要处理硬链接

我想知道是否还有其他我忘记的问题?我希望能够使用 inode 快速追踪哪些文件被移动或重命名,然后使用校验和来确认它实际上是同一个文件。


调查inotify当任何人对指定文件系统或目录中的文件执行任何操作时,您可以接到电话。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Linux 中检测文件移动或重命名的最佳方法? 的相关文章

随机推荐