原文摘自:what-is-the-difference-between-a-hard-link-and-a-symbolic-link
一圖勝千言石咬。
一例勝百圖钱贯。
創(chuàng)建兩個(gè)新文件:
touch blah1
touch blah2
向里面添加點(diǎn)內(nèi)容
echo "Cat" > blah1
echo "Dog" > blah2
查看添加的內(nèi)容:
cat blah1; cat blah2
Cat
Dog
創(chuàng)建硬鏈接和軟鏈接
ln blah1 blah1-hard
ln -s blah2 blah2-soft
查看下我們創(chuàng)建的東西
ls -l
blah1
blah1-hard
blah2
blah2-soft -> blah2
修改blah1的名字沒有什么影響
mv blah1 blah1-new
cat blah1-hard
Cat
blah1-hard指向的是inode,所以文件的內(nèi)容沒有變化。
mv blah2 blah2-new
ls blah-soft
blah2-soft
cat blah2-soft
cat: blah-soft: No such file or directory
文件的內(nèi)容沒有辦法找到守谓,因?yàn)檐涙溄邮侵赶虻拿止琶忠呀?jīng)被修改了,所以找不到對(duì)應(yīng)的文件戴陡。
因此:
blah1被刪除了,但是blah1-hard仍然擁有內(nèi)容沟涨。
blah2被刪除了恤批,但是blah2-soft是一個(gè)指向不存在文件的鏈接。
補(bǔ)充:
硬鏈接不能跨越文件系統(tǒng)裹赴。 為什么开皿? 硬鏈接共享相同的inode - 它們指向硬件位置,而不是目錄樹篮昧。 這意味著如果你試圖在ext3和ext4之間建立硬連接赋荆,那么你會(huì)遇到一些問題 - 這些文件系統(tǒng)是不同的,所以他們不能共享inode懊昨。