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


13

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

为什么这样工作,而不是源分区和目标分区的可用空间总和保持不变?

Answers:


16

根据POSIX的定义,mv会将源文件复制到目标路径,如果没有问题,则应删除源文件:

  1. 根源于source_file的文件层次结构应复制为根于目标路径的文件层次结构

  2. 根植于source_file的文件层次结构将被删除。如果由于某种原因失败,则mv应将诊断消息写入标准错误,对当前的source_file不再执行任何操作,然后继续处理任何剩余的source_files。

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

这样可以保证即使在移动过程中发生错误,也不会丢失源文件。


16

这是保守的做法,在复制成功之前不会删除文件。如果出现问题,这将更容易恢复。


但目录中有许多文件
蒂姆(Tim)

7
@Tim:在所有文件复制到目标卷上之前,它不会开始删除源文件。如果您需要一次移动一个文件,以使使用的“额外”空间永远不会比最大文件大,那么您需要构建一个循环来执行此操作。
沃伦·杨

4
您是否曾经在MS-Windows中进行过移动,并且在移动的大约一半时间内出了点问题。源和目标都是一团糟,您需要进行修复。如果您不是晚饭怪胎,那么您可能只删除了两者,并学会了不要再做一次。
ctrl-alt-delor
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.