【问题标题】:Executing 'mv A B': Will the 'inode' be changed?执行'mv A B':'inode'会改变吗?
【发布时间】:2012-05-28 23:42:00
【问题描述】:

如果我们执行一个命令:

mv A B

那么文件A的inode中的字段会发生什么?会变吗?

我认为不应该仅仅通过更改文件名来更改它,但我不确定。

【问题讨论】:

    标签: unix inode mv


    【解决方案1】:

    这至少部分取决于 A 和 B 是什么。如果您在文件系统之间移动,inode 几乎肯定会有所不同。

    在同一系统上简单地重命名文件更有可能保留相同的 inode,因为 inode 属于数据而不是目录条目,效率会导致这种设计。但是,它取决于文件系统,并且不是标准强制要求的。

    例如,可能有一个带有 inode 概念的版本控制文件系统,它为您提供一个新的 inode,因为它想要跟踪名称更改。

    【讨论】:

    • 如果我们在同一个文件系统,那么呢?
    • @Luv - 我发现this page 上的解释非常有用。目录只是从“名称”到“索引节点”的映射。因此,不需要物理移动数据的mv 将只是目录条目中的更改。 'inode' 没有变化。
    • @paxdiablo - 这是一个很好的答案。您关于版本控制文件系统的观点很有趣。例如,如果有硬链接指向 mved 的文件,那么保持理智的行为会非常昂贵。
    【解决方案2】:

    视情况而定。

    this site 上有一个很好的例子,它表明 inode 可能保持不变。但我不会依赖这种行为,我怀疑它在任何标准中都有规定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-20
      • 2020-05-02
      • 2022-12-12
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      相关资源
      最近更新 更多