原文摘自:what-is-the-difference-between-a-hard-link-and-a-symbolic-link

一图胜千言。
图片描述

一例胜百图。
创建两个新文件:

touch blah1
touch blah2

向里面添加点内容

echo "Cat"  > blah1
echo "Dog" > blah2

查看添加的内容:

cat blah1; cat blah2
Cat
Dog

创建硬链接和软链接

ln blah1 blah1-hard
ln -s blah2 blah2-soft

查看下我们创建的东西

ls -l 
blah1
blah1-hard
blah2
blah2-soft -> blah2

修改blah1的名字没有什么影响

mv blah1 blah1-new
cat blah1-hard
Cat

blah1-hard指向的是inode,所以文件的内容没有变化。

mv blah2 blah2-new
ls blah-soft
blah2-soft
cat blah2-soft
cat: blah-soft: No such file or directory

文件的内容没有办法找到,因为软链接是指向的名字,而名字已经被修改了,所以找不到对应的文件。
因此:
blah1被删除了,但是blah1-hard仍然拥有内容。
blah2被删除了,但是blah2-soft是一个指向不存在文件的链接。

补充:
硬链接不能跨越文件系统。 为什么? 硬链接共享相同的inode - 它们指向硬件位置,而不是目录树。 这意味着如果你试图在ext3和ext4之间建立硬连接,那么你会遇到一些问题 - 这些文件系统是不同的,所以他们不能共享inode。


bingo彬哥
2.5k 声望366 粉丝