linux的檔案鏈結方式分為硬鏈結與軟鏈結(也叫符號鏈結)兩種,在linux中鏈結也被視為檔案來看待,一樣可以被執行、編輯和訪問。對系統中的應用程式而言,對鏈結的操作就是對原始檔案的操作,所以鏈結不是副本。如果熟悉linux的檔案系統與目錄樹(相關部落格鏈結擴充套件檔案系統、檔案系統與目錄樹的關係),知道這兩者間的聯絡的話可以很容易理解這兩種檔案鏈結方式的原理和區別。
檔案系統告訴我們,任何乙個檔案(包括目錄)都會占用乙個inode和至少乙個block,而由檔案系統與目錄樹的關係可知,建立乙個新檔案時,檔案系統會在這個新檔案所在的目錄的block中記錄新檔案的各種資訊,包括inode號碼、屬性、許可權等,而這個新檔案的inode內又記錄著存放該檔案實際內容的block號碼(相當於指標)。那麼對於檔案鏈結的建立呢?
當我們建立乙個檔案的硬鏈結時,實際上是在該檔案所屬目錄的block中寫入了一條可以連線到該檔案的inode的記錄。也就是說,硬鏈結只是在某個目錄下新建一條檔名連線到某inode號碼的關聯記錄而已。通常情況下建立乙個硬鏈結不會導致儲存空間變化,除非檔案所屬目錄的block剛好被寫滿的時候才會用到新的block來記錄這個檔名關聯性,導致磁碟空間變化。所以當我們對硬鏈結進行編輯、執行等操作時,都是對原始檔進行操作。但如果刪除這個硬鏈結並不會刪除掉原始檔,因為原始檔的inode與block並沒有被釋放掉。如果刪除原始檔,硬鏈結也會隨之被刪除,因為硬鏈結本身就存在於原始檔所屬目錄的block中。
由硬鏈結的原理可以知道硬鏈結還有如下特點與限制:
·硬鏈結不能跨檔案系統(這是顯而易見的);
·不能建立乙個目錄的硬鏈結;
·硬鏈結不占用空間。
對於第二點,因為如果使用hard link連線到目錄時,連線的資料需要連同被連線目錄下面的所有資料都建立連線,而且未來如果要在這個硬鏈結下面再建立乙個檔案時,其源目錄下面的所有內容都得再建立一次hard link,這會使檔案系統越來越龐大又複雜,無論是對檔案系統還是對管理員來說都是不可接受的。
符號鏈結類似於windows系統的快捷方式,建立乙個符號鏈結時檔案系統將會為其分配inode和block,而這個block記錄的內容其中就有原始檔的inode號碼,所以符號鏈結在檔案系統中是乙個實際檔案。
符號鏈結有如下特點(注意與硬鏈結的對比):
·可以建立目錄的符號鏈結;
·符號鏈結會占用空間;
·如果支援多檔案系統,符號鏈結是可以跨檔案系統的。
當我們對符號鏈結進行編輯、執行等操作時,也可以對原始檔進行操作,當然符號鏈結由於是乙個實際檔案也有其特有的屬性,可以單獨對符號鏈結本身進行操作。刪除符號鏈結時原始檔也不會被刪除,而一旦原始檔被刪除,原始檔的符號鏈結的連線作用也失效了,但符號鏈結本身還存在,這點與硬鏈結不同。
硬鏈結與軟鏈結(符號鏈結)
我們知道檔案都有檔名與資料,這在 linux 上被分成兩個部分 使用者資料 user data 與元資料 metadata 使用者資料,即檔案資料塊 data block 資料塊是記錄檔案真實內容的地方 元資料則是檔案的附加屬性,如檔名 檔案大小 建立時間 所有者 檔案所在的inode等資訊。在 l...
linux中硬鏈結與符號鏈結(軟鏈結)的關係
首先要弄清楚,在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到內存在,從而實現檔案的快速訪問。一 硬鏈結 硬鏈結說白了是乙個指標,指向檔案索引節點,系統並不為它重新分配inode。可...
linux硬鏈結與軟鏈結
1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...