linux知多少?——軟硬鏈接

建立文件鏈接

1. ln file_src file_dst :硬鏈接

2. ln -s file_src file_dst:軟鏈接

用途

  1. 解決了文件的共享使用
  2. 隱藏文件路徑
  3. 增加權限及安全性
  4. 節省存儲空間

軟硬鏈接原理

硬鏈接

  • 若一個 inode 號對應多個文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個文件使用了多個別名
  • 硬鏈接(hard link):文件A是文件B的硬鏈接,則A的目錄項中的inode節點號與B的目錄項中的inode節點號相同,即一個inode節點對應兩個不同的文件名,兩個文件名指向同一個文件,A和B對文件系統來說是完全平等的。如果刪除了其中一個,對另外一個沒有影響。每增加一個文件名,inode節點上的鏈接數增加一,每刪除一個對應的文件名,inode節點上的鏈接數減一,直到為0,inode節點和對應的數據塊被回收。注:文件和文件名是不同的東西,rm A刪除的只是A這個文件名,而A對應的數據塊(文件)只有在inode節點鏈接數減少為0的時候才會被系統回收。

軟鏈接

  • 軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。軟鏈接與硬鏈接不同,若文件用戶數據塊中存放的內容是另一文件的路徑名的指向,則該文件就是軟連接軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接有著自己的 inode 號以及用戶數據塊。因此軟鏈接的創建與使用沒有類似硬鏈接的諸多限制。
  • 軟鏈接(soft link):A是B的軟鏈接(A和B都是文件名),A的目錄項中的inode節點號與B的目錄項中的inode節點號不相同,A和B指向的是兩個不同的inode,繼而指向兩塊不同的數據塊。但是A的數據塊中存放的只是B的路徑名(可以根據這個找到B的目錄項)。A和B之間是“主從”關係,如果B被刪除了,A仍然存在(因為兩個是不同的文件),但指向的是一個無效的鏈接-死鏈接
linux知多少?——軟硬鏈接

linux知多少?——軟硬鏈接

inode號顯示

軟硬鏈接的區別

硬鏈接

  • -文件有相同的 inode 及 data block;
  • -只能對已存在的文件進行創建;(由硬鏈接原理可知)
  • -不能交叉文件系統進行硬鏈接的創建;
  • -不能對目錄進行創建,只可對文件創建; (原因是文件系統不能存在鏈接環也就是說在文件系統目錄結構中產生循環,後果會導致例如文件遍歷等操作的混亂)
  • -刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。

軟鏈接

  • -軟鏈接有自己的文件屬性及權限等;(軟鏈接原理可知)
  • -可對不存在的文件或目錄創建軟鏈接;(軟鏈接原理可知)
  • -軟鏈接可交叉文件系統;
  • -軟鏈接可對文件或目錄創建;
  • -創建軟鏈接時,鏈接計數 i_nlink 不會增加;
  • -刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。
  • -軟鏈接可以被系統偵測到,而硬鏈接不可以。也就是說軟鏈接相對於硬鏈接來說更安全


分享到:


相關文章: