軟連接和硬鏈接

軟連接和硬鏈接是面試Linux方面的時候,比較容易問到的一個問題,雖然比較簡單,但是總是容易搞不清楚二者之間真正的區別在哪裏,下面就來詳細的解釋一下二者之間的異同:

windows中的快捷方式,大家都比較熟悉,就像我們最常作的一個操作就是安裝了一個windows軟件,將軟件的啓動文件複製,然後以快捷方式的格式粘貼到桌面,這時候我們只需要雙擊桌面上的圖標就可以啓動這個軟件了。同樣,Linux中的快捷方式就是連接文件

**

首先我們介紹一下什麼是連接文件:

**
在這裏插入圖片描述

向上面這種使用ll命令查看文件的長格式的時候,在文件權限的最前面第一個字符就表示了,這個文件屬於什麼類型的文件。

如何判斷一個文件是連接文件?

  • l 開頭的文件就是連接文件
  • 向上圖中其他的 - 短橫線這種的就是普通文件
  • 並且上面的長格式文件名中有一個箭頭,表示的就是這個連接文件的源文件的名稱和位置
  • 我們運行這個連接文件就相當於運行後面的passwd文件

同樣下面圖中的連接文件也是一樣的,只不過上圖是給普通文件創建的連接文件,下圖是給一個目錄創建的文件。
在這裏插入圖片描述
那麼我們查看sxjy目錄中的內容和/home/ss目錄下的內容是一致的
在這裏插入圖片描述
軟連接和硬鏈接的創建方式:

硬鏈接:

  • 命令格式:ln 源文件… 鏈接文件

  • 實質:一個文件對應多個文件名

     硬鏈接:一個inode號對應多個文件名
    

軟連接:

  • 命令格式:ln -s 源文件…鏈接文件

  • 文件類型和權限肯定是lrwxrwxrwx

  • 實質:軟連接是創建了一個新的文件,並且擁有自己的Inode號,通過這個Inode號找到另外一個文件名,
    再通過這個文件名找到其Inode號,再通過Inode號找到文件內容(數據)

     軟連接兩個文件的Inode號不同
    

區別:
除了上面創建軟連接、硬鏈接時候的區別之外,其二者之間最大的區別就是刪除原文件後,連接文件是否仍然生效的問題。

	因爲Linux系統查看文件內容的過程就是通過文件名找到其inode,然後再從block中找到對應inode的數據塊,從而輸出數據到屏幕上

硬鏈接
硬鏈接是一個inode對應多個文件,也就是多個鏈接文件的inode都是相同的,那麼當我們不論刪除源文件還是其中的連接文件的時候,通過剩下的連接文件就可以訪問到原來的數據,因爲inode都是一樣的。
在這裏插入圖片描述
軟連接

軟連接獲取源文件內容(數據)的過程是:

  • 軟連接是創建了一個新的文件,並且擁有自己的Inode號,通過這個Inode號找到另外一個文件名,
    再通過這個文件名找到其Inode號,再通過Inode號找到文件內容(數據)

  • 所以當我們將原文件刪除之後,軟連接文件就不能通過自己的inode找到源文件的文件名,也就獲取不到源文件中的數據了
    在這裏插入圖片描述
    異常的現象就是下面這樣:
    在這裏插入圖片描述

     其實上面的區別只要懂了Linux是如何讀取文件內容的過程就很好理解了
    

最後補充一點,軟連接、硬鏈接都不要文件系統,也就是說,連接文件和源文件最好都在同一個文件系統中;目錄只能創建軟連接,不能創建硬鏈接。

附:
查詢文件inode的方法:

  • ls -i 命令
  • stat 命令
發佈了33 篇原創文章 · 獲贊 52 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章