1. 程式人生 > >linux 下的硬連結與軟連結

linux 下的硬連結與軟連結

在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複制到記憶體,從而實現檔案的快速訪問。

Linux連結分兩種,一種被稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link)。預設情況下,ln命令產生硬連結。

一、硬連結
硬連結說白了是一個指標,指向檔案索引節點,系統並不為它重新分配inode。

硬連結的建立:
這裡寫圖片描述

硬連結的刪除:
這裡寫圖片描述

可以看出,在建立硬連結前,顯示的連結數目為1,建立之後,連結數目變為2,test1.txt和test1hard在inode號是一樣的,test1和test1hard顯示的檔案大小也是一樣。可見進行了ln命令的操作結果:test1.txt和test1hard是同一個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案test1的硬連結,就是為test1的檔案索引節點在當前目錄上建立一個新指標。你可以刪除其中任何一個 ,每次只會刪除一個指標,連結數同時減一,當連結數減為0時,核心才會把檔案內容從磁碟上刪除。

二、軟連結(符號連結)
軟連結克服了硬連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。

軟連結的建立:
這裡寫圖片描述

軟連結的刪除:
這裡寫圖片描述
注意,刪除軟連結應該是 rm -rf linkname 而不是 rm -rf linkname/

可以看出:
(1)軟連結原檔案與連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;
(2)在檔案屬性上軟連結明確寫出了是連結檔案,而硬連結沒有寫出來,因為在本質上硬連結檔案和原檔案是完全平等關係;
(3)連結數目是不一樣的,軟連結的連結數目不會增加;
(4)檔案大小是不一樣的,硬連結檔案顯示的大小是跟原檔案是一樣的;
(5)任何一個的時候 ,其他的檔案都會做同步的修改 。軟連結不直接使用i節點號作為檔案指標,而是使用檔案路徑名作為指標。所以 刪除連線檔案對原始檔無影響,但是刪除原始檔,連線檔案就會找不到要指向的檔案 。軟連結有自己的inode,並在磁碟上有一小片空間存放路徑名。

總結:軟連結就是快捷方式,硬連結就是指向檔案索引節點的指標。基於軟連結的各種優勢,更傾向於使用軟連結。