为什么复制慢于移动?

Che*_*n17 1 mv cp

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

我决定把它换成MV.

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

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

time cp test.txt copy.txt
Run Code Online (Sandbox Code Playgroud)

真正的0m20.113s

time mv test.txt copy.txt
Run Code Online (Sandbox Code Playgroud)

真正的0m12.403s.

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

编辑-

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

time cp test.txt ../copy.txt 
Run Code Online (Sandbox Code Playgroud)

time mv test.txt ../copy.txt
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

答案是对的.当我试图mv将文件复制到同一系统上不同的磁盘,mvcp采取了几乎相同的时间.

Jea*_*bre 6

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

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

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

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

小心,它不相同.cp默认情况下mv会覆盖目标,但无法将文件/目录重命名为现有文件/目录.