为什么副本慢于移动?

时间:2016-08-30 11:28:58

标签: cp mv

我有一个大文件,我正在移动。实验室中的正常协议是将其复制到某处然后将其删除。

我决定将其改为mv。

我的问题是,为什么mv比cp快得多?

为了测试它,我生成了一个2.7 GB的文件。

time cp test.txt copy.txt

实现了真正的0m20.113s

time mv test.txt copy.txt

真正的0m12.403s。

TL; DR mv几乎是复制速度的两倍。有什么解释吗?这是预期的结果吗?

编辑 -

我决定将文件夹移动/复制到当前文件夹以外的目的地。

time cp test.txt ../copy.txt 

time mv test.txt ../copy.txt

这次cp花了9.238s而mv只花了0.297s。所以不是一些答案所暗示的。

更新

答案是对的。当我尝试将mv文件发送到同一系统上的其他磁盘时,mvcp几乎占用了相同的时间。

1 个答案:

答案 0 :(得分:6)

当您在同一文件系统上复制文件时,系统只需更改目录条目以反映您的重命名。甚至不读取文件中的数据。

(相同的文件系统意味着:相同的目录或相同的目录树/相同的驱动器,前提是源和目标目录不会遍历导致另一个文件系统的符号链接!)

当您跨文件系统传输文件时,它与cp + rm具有相同的效果:没有速度增益(除了您只运行一个命令,并保证一致性:您不必检查是否cp成功执行rm)

(旧版本的mv拒绝跨文件系统移动目录,因为它们只进行了重命名)

小心,不等同。 cp默认覆盖目标,而mv将无法将文件/目录重命名为现有文件/目录。