a和B。
以前,a和b指向不同的indodes。
之后,我希望b指向与a相同的inode。
我希望这是安全的 - 我的意思是,如果它在某个地方失败,则指向其原始Inode或AInode。我尤其不想最终消失。
mv
在覆盖时是原子,并且当目的地已经存在时似乎不起作用。所以我可以说:
ln
如果失败会留下“ TMP”文件,这是不可取的,但不是灾难。
有更好的方法吗?
(我实际上要做的是替换具有与包含该内容的单个inode相同内容的文件,在所有目录条目之间共享。)
ln a tmp
mv tmp b
看起来更好,因为如果
ln a tmp && mv tmp b || rm tmp
ln
实际上,正如您在问题中所说的那样,这是最快的方法。(nitpickers角:更快地将两个系统调用放在一个程序中)