我有一个大文件,我正在移动。实验室中的正常协议是将其复制到某处然后将其删除。
我决定将其改为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
文件发送到同一系统上的其他磁盘时,mv
和cp
几乎占用了相同的时间。
答案 0 :(得分:6)
当您在同一文件系统上复制文件时,系统只需更改目录条目以反映您的重命名。甚至不读取文件中的数据。
(相同的文件系统意味着:相同的目录或相同的目录树/相同的驱动器,前提是源和目标目录不会遍历导致另一个文件系统的符号链接!)
当您跨文件系统传输文件时,它与cp + rm具有相同的效果:没有速度增益(除了您只运行一个命令,并保证一致性:您不必检查是否cp成功执行rm)
(旧版本的mv拒绝跨文件系统移动目录,因为它们只进行了重命名)
小心,不等同。 cp
默认覆盖目标,而mv
将无法将文件/目录重命名为现有文件/目录。