mv 命令删除了源文件,即使文件没有完全移动

mv 命令删除了源文件,即使文件没有完全移动

我使用 mv 命令将多个文件从目录 A 移动到目录 B。目录 B 所在的文件系统已满,因此我收到了相应的消息。但是,文件被移动为空(大小为 0),源文件被删除。因此,我几乎丢失了所有想要移动的文件。这是它应该有的行为吗?

答案1

您是否跨挂载点移动?通常,mv 的工作方式只是重命名文件。文件的全名包括其绝对路径,这就是为什么重命名和移动是同一个命令。

但是,如果新位置与旧位置位于不同的挂载点,则重命名无法进行,因为文件物理位于不同的分区内。

在这种情况下,mv 所做的就是默默地复制并删除文件。然而,根据我的个人经验,这个操作并不那么可靠。它在删除之前并不总是检查以确保复制成功。

坦率地说,mv 完全没有必要尝试这样做,您应该做的只是在跨挂载点传输信息时使用 cp 命令,然后使用 rm 命令。

通过使本来应该简单的命令在用户不知情的情况下执行幕后魔法,该命令的作者创建了一个不太透明的系统,此外还更容易出错。

相关内容