为什么文件的索引节点号发生变化而没有其他变化?

为什么文件的索引节点号发生变化而没有其他变化?

今天我注意到 tripwire 认为某些 Apache 配置文件改变了昨天。我知道我没有对这些文件进行任何更改。

查看信息,发现只有Inode号发生了变化:

  Property:            Expected                    Observed
  -------------        -----------                 -----------
  Object Type          Regular File                Regular File
  Device Number        2305                        2305
* Inode Number         5770048                     5771399
  Mode                 -rw-r--r--                  -rw-r--r--
  Num Links            1                           1
  UID                  root (0)                    root (0)
  GID                  root (0)                    root (0)
  Size                 1055                        1055
  Modify Time          Mon 09 Oct 2017 04:54:54 PM PDT
                                               Mon 09 Oct 2017 04:54:54 PM PDT
  Blocks               8                           8
  CRC32                BSW2x+                      BSW2x+
  MD5                  CqXESieHTV/33Ye6iuaHjk      CqXESieHTV/33Ye6iuaHjk

一个文件的索引节点怎么可能发生变化而没有其他变化呢?

答案1

单程:

cp -p file file.new && mv file.new file

例如:

$ ls -li file
12289 -rw-r--r--    1 jeff jeff 0 Jun 13 14:24 file
$ cp -p file file.new && mv file.new file
$ ls -li file
12292 -rw-r--r--    1 jeff jeff 0 Jun 13 14:24 file

另一种可能性是文件是从备份系统恢复的(并且备份系统恢复了时间戳)。

另一个更新索引节点号而不触及内容的活动是sed -i不进行任何更改的命令,因为sed -i使用临时文件来存储结果,然后在最后将其重命名为原始文件。

相关内容