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