硬鏈接
概念
硬鏈接(hard link,也稱鏈接)是對同一個文件系統中的一個文件的連接,它關聯的是一個文件的inode(節點)。linux中每一個文件系統都有其一套獨立而完整的inode“機制”。同一個文件系統中,inode是文件存在的唯一標識。文件名正是通過映射一個文件的inode號來關聯一個文件。當然一個文件也可以同時擁有不同的幾個文件名,因此通俗的來說,我們可以把硬鏈接看作是某個文件的一個或多個文件名。
硬鏈接的作用
大家可能會想了。一個文件要那么多文件名有什么用,一個就夠了啊,為什么要另外再創建硬鏈接,豈不是多此一舉。
當然不是,當你訪問一個文件路徑很深或者文件名很繁瑣的文件時,可能會被那一長串根本記不住的文件名搞崩潰的。就好比有一個"歪果仁",他一個人的名字可能比我們一個家族的族譜都要長(你懂得)。當你每次需要跟他交流時要先把他家的”族譜”背一遍,我的天,你還有心情跟他交流嗎?而突然有一天他告訴你,你可以用”歪果仁”來稱呼他,你是不是會瞬間感覺”世界和平了”。沒錯,當我們需要經常面對一個令人想哭的文件名,而文件的位置又不方便變動時,就可以用鏈接的方式再給它起個名字,一勞永逸,豈不快哉。
硬連接的創建條件
這么好用的工具是不是迫不及待想試試了。別急,工具雖好用,但是也不是隨便就可以濫用的,硬鏈接是會有一些限制條件的。
首先,硬鏈接不能跨設備和分區建立。剛剛我們提到過,硬鏈接是關聯文件的inode建立的,而每一個文件系統都有其完整的一套inode機制。也就是說不同的文件系統中可能會有相同的inode,但他們所代表的文件卻著實不同。如此一來,跨分區和設備創建的硬鏈接豈不瞬間凌亂了。
還有硬鏈接也不能針對目錄建立,也就是說不能給一個目錄創建硬鏈接,別問我為什么,我也不清楚,反正OS就是這么要求的。^_^*
最后,鏈接命名可以采用相對路徑,而且相對路徑是可以相對于當前工作目錄來說的。
硬鏈接的創建
man一下ln的用法:
硬鏈接的使用很簡單,要創建硬鏈接無需使用任何選項,其語法如下:
]# ln TARGE [FILENAME]
通過比較發現,鏈接文件和原文件除了文件名剩下的一模一樣,而且原文件鏈接數會加一。當我們更改其中“任何一個文件”,訪問“另一個文件”時發現內容發生了同樣的變化。當刪除其中一個文件時,即便是刪除原文件,也只是連接數減少,而文件數據依舊可以被讀取,并不受其影響。這也進一步說明,硬鏈接確實是同一個文件系統中某個文件的一個或幾個文件名。
硬連接的特點
綜合以上幾點,總結出硬連接的一些特性:
1、 硬鏈接不能跨越設備和分區創建;
2、 不能對目錄創建硬鏈接;
3、 硬鏈接引用原文件的inode號,文件大小,時間等屬性與原文件相同;
4、 創建硬鏈接會增加額外的記錄項以引用文件,文件鏈接數會遞增;
5、 即便刪除原文件也不影響鏈接文件訪問;
6、 刪除文件時,鏈接數遞減,文件要存在,至少得有一個鏈接數,當鏈接數為零,該文件就被刪除了。
軟鏈接
可以看出,文件系統中使用鏈接真的方便了很多,但是硬鏈接的局限性不免讓人覺得有些束手束腳,不能跨越分區,不能對目錄創建等,總會讓人覺得有些尷尬。對此,我們有下面一種補救措施,那就是軟鏈接,又稱符號鏈接。
概念
軟鏈接(solf links)又稱符號鏈接,這個文件包含了另一個文件的路徑名??梢允侨我馕募蚰夸?,可以鏈接不同文件系統的文件。
創建方法:
]# ln –s GARGET DIRECTORY
注意:創建軟鏈接時,原文件建議采用相對路徑來書寫,但是不能相對于當前工作目錄,應該相對于鏈接文件路徑書寫。
與硬鏈接不同,可以對目錄創建軟鏈接,軟鏈接的inode號與原文件不同,而且原文件的鏈接數也沒有遞增。文件屬性也都完全不同。由于軟鏈接文件的內容是它引用的文件的名稱,所以軟鏈接的大小是原文件的文件名的字符數。
軟鏈接文件只是其源文件的一個標記,當刪除了源文件后,鏈接文件不能獨立存在,雖然仍保留文件名,但卻不能查看軟鏈接文件的內容了。
在對符號鏈接進行讀或寫操作的時候,系統會自動把該操作轉換為對原文件的操作,但刪除鏈接文件時,系統僅僅刪除鏈接文件,而不刪除源文件本身。
刪除硬/軟鏈接使用:
]# rm link_file 或者
]# unlink link_file
軟鏈接的特性
綜上所述,同樣可以總結出一些關于軟鏈接的特性:
1、 軟鏈接可以跨越設備和分區;
2、 可以對不同文件系統中的目錄或物理文件創建軟鏈接;
3、 軟鏈接的指向是另一個文件的路徑,其文件大小為指向路徑字符的長度;
4、 軟鏈接文件有獨屬于自己的inode號,不增加或減少目標文件的鏈接數;
5、 刪除原文件,不會刪除軟鏈接,但原文件就消失了,訪問不到了,軟鏈接就成了“無根之物;”
6、 使用ls -L可以顯示軟鏈接的名稱和它引用的文件。
原創文章,作者:Hulk,如若轉載,請注明出處:http://www.www58058.com/53124