1. 程式人生 > >硬連結與軟連線

硬連結與軟連線

硬連結:簡單說,檔名就是檔案的硬連結,硬連結就是給檔案起了個別名,對應的 inode 與原檔案一樣

軟連結:簡單說,類似於快捷方式,它有自己單獨的 inode,指向了被連結的檔案(跟路徑關聯

畫個圖瞭解下:

實驗驗證:

建立一個檔案,text.txt

# cd test # touch test.txt # ls -al

可以看到,硬連結數為 1

# ln test.txt hard_link # ls -al

可以看出,在建立了 hard_link 後,test.txt 硬連結數變為 2 了,

而 hard_link 指向的檔案 inode 和 test.txt 一樣,因此也顯示 2 個硬連結數

我們再建立一個軟連結:

# ln -s test.txt soft_link # ls -al

可以看出,軟連結自身的硬連結數為 1,原來的 test.txt 和 hard_link 硬連結數依然為 2

軟連結的 inode 和硬連結的 inode 並不是一個

下面我們刪除 test.txt:

# rm -f test.txt # ls -al

可以看到,hard_link 硬連結數變為 1 了,而 soft_link 已經失效,因為它指向的路徑不存在了

我們編輯下 hard_link

# echo "hello man" > hard_link

下面,恢復 test.txt

# ln hard_link test.txt # ls -al

 

可以看到,軟連結恢復正常了

再看看內容

# cat soft_link

 

證明,hard_link 與 test.txt 確實是同一個檔案

只有當一個檔案的硬連結數為 0,它才會被刪除

附:硬連結的限制

1.  不允許普通使用者給目錄建立硬連結 (可能把目錄樹變成環形圖,從而無法定位一個檔案)

2.  不能跨檔案系統建立硬連結