我们目前正在做经典的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
.总体而言,这不会产生太大的差异,而且这对于您实际想要实现的目标来说是最清楚的。