移动实际上是在新位置创建文件的副本,然后从其先前位置删除该文件。由于不可能同时有两个相同的 inode 编号,因此 inode 编号应该在复制之后和删除旧文件之前(短时间)发生变化。但是,我发现 inode 编号在mv
命令之后没有改变。那么,被删除文件的 inode 编号是否重新分配给了复制的文件?
答案1
移动实际上是在新位置创建文件的副本,然后从先前位置删除该文件。
但事实并不一定如此。
如果目的地是在同一个文件系统上,文件不会被复制。只会改变其路径,该路径是目录的一部分,不存储在 inode 中。
如果目的地是在不同的文件系统上,则文件被复制。
Stack Overflow 上也介绍了这一点:Linux 的 mv 内部如何工作?