cp vs. mv:哪个操作更有效率?

mkc*_*mkc 7 cp mv

我发现自己将相当大量的数据(20+ GB)从一个目录树移动到另一个目录树。通常它们在同一个文件系统上,但有时它们在不同的文件系统上。我cp只是为了以防万一保留原始数据。复制完成后,我在验证数据已正确复制后删除原始数据。有时,mv如果我觉得之后懒得清理原始数据,我就会这样做。但是,我想知道,从纯技术角度来看,哪种操作更有效?为什么?

hee*_*ayl 15

从技术上讲,mv当源和目标位于不同的文件系统上时,它不是原子的,实际上是cp+ unlink()。所以首先mv将复制文件,然后调用unlink()从目录的条目列表中删除文件。

所以在这种情况下,AFAIU 是你cp然后rmunlink())还是mv直接使用完全是你的个人喜好。

而在mv同一个文件系统中 -ing 时,您应该mv在同一个文件系统(调用rename())中使用它的原子性,从而减少开销。

感谢 @muru 和 @psusi 指出 FS 依赖行为。

  • (……跨文件系统)。在同一个文件系统中,它是原子的。 (3认同)
  • 更具体地说,在同一个文件系统中,它只是调用了 `rename()`。 (2认同)