我想在 Linux 系统上捕获以下操作。是否可以有效地做到这一点?我的最终目标是提供审计和一组额外的以不同方式索引的文件系统元数据。如果答案是“否”,我很欣赏有用方向的指点。
1) open(), and its parameters (where flags is O_CREAT)
2) write(), along with its parameters, *buf, and the struct file for fd, including f_pos
3) the corresponding information in 2 for a memory-mapped write to a file. I realize I'm asking something very difficult here as it requires an incestuous knowledge between the layers. Setting a flag that memory-mapped IO to a given open file has occurred is good enough, similar to how O_DIRECT writes might be handled. (triggering a later re-scan).
4) rename(), unlink()
5) mkdir(), rmdir()
6) truncate(), ftruncate()
如果有竞争技术来捕获这些类型的操作,我最感兴趣的是那些持续时间最长(最稳定和社区支持最多)的技术,以及那些最不特定于文件系统的技术(reiser4 插件令人兴奋但不似乎在政治上可行)。
尽管我的清单 1-6 只是示例,但关于我忘记的内容的想法是有帮助的。但我并不想全面,只是传达我的设计目标。
例如,将此数据传递给用户空间将允许保持实时的 locate/updatedb 索引。它将允许数据库跟踪每个块和每个文件的 MD5。这些数据的可用性可以促进快照。