更好的覆盖方式?

更好的覆盖方式?

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

我想知道哪一个更好?

fileA和都fileB存在,大小~50-100M。

假设在 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

答案1

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

如果它位于文件系统内(必须在文件系统中才能ln工作),那么区别就没有意义。

在每种情况下,所发生的只是目录条目被修改为指向不同的索引节点。如果最好的话,这只是一个可以忽略不计的差异,所以你实际上是在比较“命令启动的速度”。

但有一点需要注意——最后的命令将保留/pathA/fileA在原处 - 这是一个硬链接,使两个目录条目都指向相同的数据。

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

因此,只需简单地使用mv.总体而言,这不会产生太大的差异,而且这对于您实际想要实现的目标来说是最清楚的。

相关内容