Linux 軟鏈結與硬鏈結區別

2021-10-06 23:07:36 字數 2152 閱讀 7490

在linux系統中,一定會遇到這樣一種檔案,當我們使用ll 或者ls -l命令來檢視他的時候,他的許可權這一項中會顯示的第乙個英文本母為l,這便是代表他是鏈結檔案。

而鏈結檔案有分為軟鏈結和硬鏈結兩種,那他們有什麼區別呢?我這就來從以下八個方面來為大家介紹一下他們的區別。

2.inode number(i節點)是否相同?

所謂的i節點就是每個檔案與目錄在建立的時候,就會有乙個編號貼在他們身上,和我們的身份證號碼一樣,i節點也就是他們的身份證,而它們在每乙個分割槽中都是唯一的,在乙個掛載點之下,便是乙個分割槽,因為硬鏈結他們本身就是同乙個檔案,所以他們的i節點也是相同的,這一點很好理解,不同外號的人,身份證號碼一樣。而軟鏈結就不一樣了,因為軟鏈結本身就是乙個鏈結檔案,和它指向的檔案簡然不同,所以他也有屬於自己的i節點。

這裡還有乙個小知識要說:

3.原始檔案刪除,鏈結檔案是否可以訪問?

要想明白這一點,我們需要畫個簡單的圖:

這便是硬鏈結,他們兩個名字指向的是磁碟裡面的同一塊區域,裡面的內容也都一樣。

而我們刪除了硬鏈結的原始檔案,只不過是斷了一條聯絡,而硬鏈結靠自己的這一條也可以找到硬碟存放檔案的位置,所以它依舊可以訪問。

軟鏈結檔案s先指向原檔案,然後才通過原檔案找到磁碟存放檔案的位置,一旦原檔案被刪除,這條順藤摸瓜的路便被攔腰斬短,所以也就不可訪問了。

4.是否可以跨分割槽建立?

因為硬鏈結的本質是同一塊硬碟位址,所以乙個檔案不能在其他分割槽建立自己的硬鏈結,硬碟的分割槽不同,他們自然也就不能誕生了。而軟鏈結,不管你的原檔案在哪,只要告訴軟鏈結路徑,他就能跨越山和大海,隔著分割槽來擁抱你的原檔案,這便是他們在這一點的區別。

5.原檔案的鏈結數是否增加?

在建立硬鏈結之後,檔案多了乙個名字,便多了乙個鏈結數,所謂的鏈結數就是在你輸入ls -l或者ll的時候,顯示在第二列的內容,他就是顯示檔名稱的個數,而軟鏈結沒有重新起名字,所以它的鏈結數不增加。這裡要說一點:你可以發現,目錄的鏈結數為2,這是為什麼呢?難道它們自動建立了鏈結嗎?我們一會來說。

6.他們的大小是否有明顯區別?

硬鏈結是檔案本身,所以原檔案有多大,他就是多大,而軟鏈結只不過是乙個指示標,它的大小是有它的路徑名稱大小決定的,所以一般來說也就幾kb,或者十幾kb。

7.是否支援對目錄建立?

我們在反回來談這一點,硬鏈結是不支援對目錄建立的,這是因為系統採用的資料結構和演算法的限制,防止進入死迴圈,它是和i節點相關聯的,而i節點和檔案相關,所以乙個硬連線只能對應乙個檔案。如果想讓乙個硬連線到乙個目錄,就只能對這個目錄下的所有檔案都建立硬連線,如果將來這個目錄下又有新檔案了,就又要建立硬連線,這便是死迴圈。但是軟鏈結就不一樣了,它指向原檔案,所以對軟鏈結的操作都實際上是在操作它所指向的原檔案,這又有什麼不可的呢?其實說到底,只不過是由它們的底層原理所造成的。現在來回答一樣剛才的問題,目錄檔案的兩個鏈結數是哪來的呢?那是因為在每個資料夾下面,都有兩個隱藏起來的小東西,".「和」…",你可以通過ls -a命令來找到它。這是表示當前目錄和上級目錄的相對路徑,如果乙個目錄有上級目錄也有下級目錄,他的鏈結數就會為3。

8.相對路徑的寫法是否一樣?

對於硬鏈結來說,他的相對路徑是相對於當前目錄來說的,但是對於軟鏈結來說,是指原檔案相對於軟鏈結位置的相對路徑,不能是相對於當前目錄的相對路徑,意思就是從軟鏈結的位置開始一直倒退回根目錄,然後在前進到原檔案所在目錄

舉個例子吧:

在根下的/tmp/xl/a 下有乙個a檔案,我們想把軟鏈結建立在/tmp/d1/d2/d3/下為a-soft,具體操作為這樣:

ln -s …/…/…/…/…/tmp/lx/a /d1/d2/d3/a-soft

這便是軟鏈結的相對路徑建立法。

linux硬鏈結與軟鏈結區別

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...

Linux硬鏈結與軟鏈結區別

linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。軟鏈結可以看作是windows中的快捷方式,可以讓你快速鏈結到目標檔案或目錄。硬鏈結則透過檔案系統的inode來產生新檔名,而不是產生新檔案。硬連線 a是b的...

硬鏈結與軟鏈結區別

學過作業系統的人都應該了解硬鏈結與軟鏈結,我當時學的時候也是有點迷糊,其實硬鏈結與軟鏈結非常好理解。我們都知道windows裡面的快捷方式的概念吧,鏈結就相當於快捷方式,linux裡面建立軟鏈結的方式如下 軟鏈結相當於乙個指向檔案的乙個指標,而硬鏈結相當於建立了乙個檔案的副本。每個檔案都有乙個引用值...