重命名后不会更改的文件 ID

重命名后不会更改的文件 ID

我正在尝试编写一个系统实用程序脚本,该脚本将作为 cron 作业运行并捕获文件系统统计信息和环境设置,以便跟踪尽可能多的更改。

考虑以下时间表

T0: there is a file /dir/fileX.txt
T1: job runs and captures every file and its stats (permissions, size, checksum etc), including /dir/fileX.txt
T2: mv /dir/fileX.txt /dir/fileY.txt
T3: job runs again and recaptures the file system.  But all it can tell is that fileX.txt was deleted and fileY.txt created

如果我重命名可以用来键入所有文件而不是名称的文件,是否有一些文件 ID 不会更改?这样,在 T1 处我将键入文件,但 ID 而不是名称和文件名将只是另一个属性。在 T3,我将能够分辨出这是同一个文件,但名称已更改,因为 ID 保持不变。

答案1

听起来您正在寻找使用索引节点。基于 inode 引用文件是解决一些常见文件名问题的好方法(例如尝试删除名为“test*”的文件,这通常会使 rm 犹豫不决),并且在您的特定情况下应该允许您引用该对象。

答案2

我给你的第一个答案是对文件运行 md5sum 并存储结果。

当我想起一个旧文章关于带有校验和的文件系统。
遵循这个概念,有一个实验选项ext4 文件系统

有一个2013年报告它定义了 ext4 的这个特性,实验性的,但总是比 Btrfs 更好。作者制作了一个脚本来克服为每个文件生成校验和并将其存储为扩展属性的稳定性问题。您可以在报告中找到脚本和说明。

也许此解决方案之一适合您。

答案3

您的问题听起来像是您需要一个基于定制主机的入侵检测系统。

查看其中一些,检查您是否可以按照您喜欢的行为方式编译或配置它。

一些名字:samhain tripwire aide

相关内容