使用 cp -l 或 ln 进行硬链接有区别吗?

twa*_*163 16 hard-link cp ln

我正在使用 rsync 和硬链接实施备份方案。我知道我可以使用带有 rsync 的 link-dest 来做硬链接,但是我看到提到在 rsync 中实现“link-dest”之前使用“cp -l”。我知道的另一种硬链接方法是“ln”。

所以我的问题是,出于好奇:与使用“ln”相比,使用“cp -l”制作硬链接有区别吗?

gar*_*Red 19

两者的结果必须相同,因为创建了到原始文件的硬链接。

区别在于预期用途以及每个命令可用的选项。例如,cp可以使用递归而ln不能:

cp -lr <src> <target>
Run Code Online (Sandbox Code Playgroud)

将创建硬链接<target><src>. (它创建新目录;而不是链接)结果将是下面的目录树结构<target>看起来与<src>. 它的不同之处cp -r <src> <target>在于使用后者将复制每个文件和文件夹并为每个文件和文件夹提供一个新的,inode而前者仅使用文件上的硬链接,因此只会增加它们的Links数量。

当用于复制单个文件时,如在您的示例中,结果将是相同的。


Ste*_*nny 6

link使用最少的系统调用,然后是ln,最后是cp

$ strace link f.txt g.txt | wc --lines
282

$ strace ln --symbolic f.txt g.txt | wc --lines
311

$ strace ln f.txt g.txt | wc --lines
334

$ strace cp --symbolic f.txt g.txt | wc --lines
394

$ strace cp --link f.txt g.txt | wc --lines
410
Run Code Online (Sandbox Code Playgroud)