linux之軟連接和硬連接的區別


硬連接

硬鏈接是通過索引節點進行的鏈接。在Linux中,多個文件指向同一個索引節點是允許的,像這樣的鏈接就是硬鏈接。硬鏈接只能在同一文件系統中的文件之間進行鏈接,不能對目錄進行創建。如果刪除硬鏈接對應的源文件,則硬鏈接文件仍然存在,而且保存了原有的內容,這樣可以起到防止因為誤操作而錯誤刪除文件的作用。由於硬鏈接是有着相同 inode 號僅文件名不同的文件,因此,刪除一個硬鏈接文件並不影響其他有相同 inode 號的文件。

  • 通過ln rumenz.txt rumenz123.txt創建
  • 不能對目錄進行創建硬鏈接,只可對文件創建。
  • 以文件副本的形式存在,但不占用實際空間。
  • 文件名有相同的 inode 及 data block。
  • 只有在同一個文件系統中才能創建,不能交叉文件系統進行硬鏈接的創建。
  • 刪除其中一個硬鏈接文件並不影響其他有相同inode號的文件。
  • 只能對已存在的文件進行創建。

適用場景

用於鏡像數據文件,防止誤刪

軟連接

軟鏈接(也叫符號鏈接)與硬鏈接不同,文件用戶數據塊中存放的內容是另一文件的路徑名的指向。軟鏈接就是一個普通文件,只是數據塊內容有點特殊。軟鏈接可對文件或目錄創建。
軟鏈接主要應用於以下兩個方面:一是方便管理,例如可以把一個復雜路徑下的文件鏈接到一個簡單路徑下方便用戶訪問;另一方面就是解決文件系統磁盤空間不足的情況。例如某個文件文件系統空間已經用完了,但是現在必須在該文件系統下創建一個新的目錄並存儲大量的文件,那么可以把另一個剩余空間較多的文件系統中的目錄鏈接到該文件系統中,這樣就可以很好的解決空間不足問題。刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接就變成了死鏈接。

  • ln -s rumenz.txt rumenz123.txt
  • 是存放另一個文件的路徑的形式存在。
  • 可交叉文件系統創建 ,硬鏈接不可以。
  • 可以對目錄進行鏈接。
  • 有自己的文件屬性及權限等。
  • 可對不存在的文件或目錄創建軟鏈接。
  • 軟鏈接可對文件或目錄創建。
  • 創建軟鏈接時,鏈接計數 i_nlink 不會增加。
  • 刪除軟鏈接並不影響被指向的文件,但若被指向的原文件被刪除,則相關軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創建,死鏈接可恢復為正常的軟鏈接)。

img

無論是硬鏈接或軟鏈接都不會將原本的檔案復制一份,只會占用非常少量的磁碟空間。

適用場景

  • 便於文件管理,將復雜路徑下的文件鏈接到簡單路徑下訪問。
  • 解決某個目錄空間不足問題。

怎么查看一個文件的硬連接文件

> ls -il
total 8
1806727 -rw-r--r-- 2 root root 137 May  6 20:14 one.txt
1806727 -rw-r--r-- 2 root root 137 May  6 20:14 tow.txt

硬連接文件的inode number是一樣的.可以看出由於one.txttow.txt互為硬鏈接, 所以他們的inode number相同.

> find / -inum 1806727

查看整個文件系統中有哪些文件是one.txt的硬連接.

怎么查看一個文件的軟連接

> find -type l -exec ls -l {} \;| grep 'rumenz.txt'

知道一個軟連接文件,怎么找到該文件的真實路徑

// realpath 軟連接文件
> realpath /etc/rc.local
/etc/rc.d/rc.local

原文鏈接:https://rumenz.com/rumenbiji/linux-soft-hard-link.html
微信公眾號:入門小站


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM