我使用 mv 命令将多个文件从目录 A 移动到目录 B。目录 B 所在的文件系统已满,因此我收到了相应的消息。但是,文件被移动为空(大小为 0),源文件被删除。因此,我几乎丢失了所有想要移动的文件。这是它应该有的行为吗?
答案1
您是否跨挂载点移动?通常,mv 的工作方式只是重命名文件。文件的全名包括其绝对路径,这就是为什么重命名和移动是同一个命令。
但是,如果新位置与旧位置位于不同的挂载点,则重命名无法进行,因为文件物理位于不同的分区内。
在这种情况下,mv 所做的就是默默地复制并删除文件。然而,根据我的个人经验,这个操作并不那么可靠。它在删除之前并不总是检查以确保复制成功。
坦率地说,mv 完全没有必要尝试这样做,您应该做的只是在跨挂载点传输信息时使用 cp 命令,然后使用 rm 命令。
通过使本来应该简单的命令在用户不知情的情况下执行幕后魔法,该命令的作者创建了一个不太透明的系统,此外还更容易出错。