更好的覆盖方式?

Gan*_*ang 2 files

我们目前正在做经典的planA。

我想知道哪个更好?

无论fileAfileB生存,以50〜100〜大小。

假设在 Linux/mac 中的同一个 NFS 挂载中

假设这是两个文件都存在的覆盖

# planA - we do this way
mv /pathA/fileA /pathB/fileB

# planB
rm /pathB/fileB; mv /pathA/fileB /pathB/fileB

# planB1 - I think is the same as planB, but not sure
unlink /pathB/fileB; ln /pathA/fileA /pathB/fileB
Run Code Online (Sandbox Code Playgroud)

Sob*_*que 9

当涉及到文件 IO 时,昂贵的任务是移动数据。

如果它在一个文件系统中(它必须是这样ln才能工作),那么区别就没有实际意义了。

在每种情况下,所发生的只是一个目录条目被修改为指向不同的 inode。如果最好,那只会是微不足道的差异,因此您实际上是在比较“命令启动的速度”。

但有一个警告——最后一个命令将保留/pathA/fileA原位——它是一个硬链接,使两个目录条目指向相同的数据。

这可能会在未来让人们感到困惑,因为如果他们覆盖fileA,它会做一件事,如果他们编辑它,它会做其他事情。

所以只是在简单的方面犯错 - 坚持只使用mv. 总体而言,它不会产生太大差异,而这对于您实际要实现的目标是最清楚的。