为什么在“mv”期间源分区上的可用空间没有变化?

Tim*_*Tim 13 mv

我正在运行mv将一个目录(包含许多文件)从一个分区移动到另一个分区。在mv逐个移动目录中的单个文件时,我注意到源分区的可用空间大小没有变化,而目标分区的可用空间大小正在减少。

为什么它以这种方式工作,而不是源和目标分区的可用空间大小总和保持不变?

cuo*_*glm 16

正如 POSIX 定义的那样,mv会将源文件复制到目标路径,如果没有问题,将删除源文件:

  1. 以 source_file 为根的文件层次应复制为以目标路径为根的文件层次

  2. 应删除以 source_file 为根的文件层次结构。如果由于任何原因失败,mv 将向标准错误写入诊断消息,对当前的 source_file 不做任何处理,并继续处理任何剩余的 source_files。

如果您在同一个文件系统上移动,您只会将条目从文件系统中的一个位置移动到另一个位置。

保证在移动过程中发生错误时不会丢失源文件。


hil*_*red 16

它是保守的,在复制成功之前不会删除文件。这使得在出现问题时更容易恢复。

  • @Tim:在目标卷上复制*所有*的文件之前,它不会开始删除源文件。如果您需要一次移动一个文件,以便永远不会使用比最大文件更多的“额外”空间,则需要构建一个循环来执行此操作。 (7认同)
  • 您是否曾经在 MS-Windows 中进行过移动,并且在移动进行到一半时,出现了问题。源和目标都是一团糟,你需要修复它。如果你不是一个超级极客,那么你可能只是将两者都删除,然后学会不再这样做。 (4认同)