要分清這兩種鏈接方式,首先得理解linux的分區方式,在linux分區中把磁盤分爲inode區和data blocks區(即數據實際所在區域),inode區包含了文件大小,創建時間,修改時間,所有者,所屬組,讀寫權限,數據所在的block號等信息,inode區中的inode號(即索引節點號)纔是文件的唯一識別標示而不是文件名。系統或程序通過inode號尋找正確的文件數據塊,文件名只是幫助人們識別和記憶使用。
即程序通過filename(文件名)獲取文件內容過程如下:
filename → inode → data blocks
查看inode號可用 stat + 文件名 或 ls -i 命令
爲解決linux系統中文件共享使用,linux中引用了兩種鏈接,硬鏈接(hard link)和軟鏈接(又稱符號鏈接,即soft link 或者symbolic link)。
【硬鏈接】
若一個inode號對應多個文件名,則稱這些文件爲硬鏈接。換句話說,硬鏈接就是一個文件使用了多個別名,不論用哪個檔名來編輯,最終都會寫入同一個inode和data block,均能進行數據的更改。類似於備份。
由於硬鏈接是有相同的inode號而文件名不同的文件,特性如下:
a,文件有相同的inode和data block;
b,只有當文件存在時才能創建;
c,不能對目錄創建,只可對文件創建;
d,刪除一個硬鏈接文件並不影響其他擁有相同inode的文件;
e,不能交叉文件系統 進行硬鏈接的創建;
硬鏈接的創建 ln source(源文件) target( 目標文件)
【軟鏈接】
軟鏈接類似於windows中的快捷方式,就是一個普通文件,文件內容是另一個文件路徑名的指向。軟連接有自己的inode和data block。
因此軟鏈接的創建沒有像硬鏈接的諸多限制:
a,軟鏈接有自己的文件屬性及權限;
b,可對不存在的文件或目錄建立鏈接(死鏈接);
c,對文件和目錄均可建立;
d,刪除軟鏈接並不影響原文件,若原文件被刪,則相關軟鏈接成爲死鏈接(即dangling link,若指向路徑的文件被重新建立,死鏈接可恢復爲正常鏈接);
e,可交叉文件系統創建;
f,創建軟鏈接時,鏈接計數i_nlink不會增加;
軟鏈接的創建 ln -s source(源文件) target(目標文件)