cp vs. mv:哪种操作效率更高?

cp vs. mv:哪种操作效率更高?

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

答案1

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

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

mv在同一文件系统中使用 -ing 时,您应该mv在同一文件系统中将其用作原子(调用rename()),以便减少开销。

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

相关内容