为什么移动文件不会影响其 inode 编号?

为什么移动文件不会影响其 inode 编号?

移动实际上是在新位置创建文件的副本,然后从其先前位置删除该文件。由于不可能同时有两个相同的 inode 编号,因此 inode 编号应该在复制之后和删除旧文件之前(短时间)发生变化。但是,我发现 inode 编号在mv命令之后没有改变。那么,被删除文件的 inode 编号是否重新分配给了复制的文件?

答案1

移动实际上是在新位置创建文件的副本,然后从先前位置删除该文件。

但事实并不一定如此。

如果目的地是在同一个文件系统上,文件不会被复制。只会改变其路径,该路径是目录的一部分,不存储在 inode 中。

如果目的地是在不同的文件系统上,则文件被复制。

Stack Overflow 上也介绍了这一点:Linux 的 mv 内部如何工作?

相关内容