linux軟 硬鏈結的詳細區別

2021-08-23 15:05:35 字數 2393 閱讀 9943

linux系統下提供ln指令來進行檔案鏈結。檔案鏈結主要分為硬鏈結和軟鏈結。

可以用:ln命令來建立硬鏈結。語法:

ln [options] existingfile newfile ln[options] existingfile-list directory

用法: 第一種:為」existingfile」建立硬鏈結,檔名為」newfile」。第二種:在」directory」目錄中,為 」existingfile-list」中包含的所有檔案建立乙個同名的硬鏈結。常用可選[options] –f 無論」newfile」存在與否,都建立鏈結。-n 如果」newfile」已存在,就不建立鏈結。

例子:$ ls –il 13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2 $ ln file2 file2hard $ ls –il 13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard

注意在建立鏈結前,file1 顯示的鏈結數目為1,建立鏈結後(1)file1和file1hard的鏈結數目都變為2;(2) file1和file1hard在inode號是一樣的(3) file1和file1hard顯示的檔案大小也是一樣。可見進行了ln命令的操作結果:file1和file1hard是同乙個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案file1的硬鏈結,就是為file1的檔案索引節點在當前目錄上建立乙個新指標。如下圖,你可以刪除其中任何乙個,如rm file2 ,每次只會刪除乙個指標,鏈結數同時減一,只有將所有指向檔案內容的指標,也即鏈結數減為0時,核心才會把檔案內容從磁碟上刪除。

不足:儘管硬鏈結節省空間,也是linux系統整合檔案系統的傳統方式,但是存在一下不足之處:(1)不可以在不同檔案系統的檔案間建立鏈結(2)只有超級使用者才可以為目錄建立硬鏈結。

軟鏈結克服了硬鏈結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號鏈結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行鏈結。

如果給ln命令加上- s選項,則建立軟鏈結。如果[鏈結名]已經存在但不是目錄,將不做鏈結。[鏈結名]可以是任何乙個檔名(可包含路徑),也可以是乙個目錄,並且允許它與「目標」不在同乙個檔案系統中。如果[鏈結名]是乙個已經存在的目錄,系統將在該目錄下建立乙個或多個與「目標」同名的檔案,此新建的檔案實際上是指向原「目標」的符號鏈結檔案。

例子:$ ls -il 13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard $ln –s file1 file1soft $ls -il 13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2 13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard 13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1

軟鏈結與硬鏈結,區別不僅僅是在概念上,在實現上也是不同的。區別:硬鏈結原檔案&鏈結檔案公用乙個inode號,說明他們是同乙個檔案,而軟鏈結原檔案&鏈結檔案擁有不同的inode號,表明他們是兩個不同的檔案;在檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫出來,因為在本質上硬鏈結檔案和原檔案是完全平等關係;鏈結數目是不一樣的,軟鏈結的鏈結數目不會增加;檔案大小是不一樣的,硬鏈結檔案顯示的大小是跟原檔案是一樣的,這用強調,因為是等同的嘛,而這裡軟鏈結顯示的大小與原檔案就不同了,file1大小是48b,而file1soft是5b,這裡面的5實際上就是「file1」的大小。

總之,建立軟鏈結就是建立了乙個新檔案。當訪問鏈結檔案時,系統就會發現他是個鏈結檔案,它讀取鏈結檔案找到真正要訪問的檔案。

缺點:因為鏈結檔案包含有原檔案的路徑資訊,所以當原檔案從乙個目錄下移到其他目錄中,再訪問鏈結檔案,系統就找不到了,而硬鏈結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

linux軟 硬鏈結的詳細區別

linux系統下提供ln指令來進行檔案鏈結。檔案鏈結主要分為硬鏈結和軟鏈結。可以用 ln命令來建立硬鏈結。語法 用法 第一種 為 existingfile 建立硬鏈結,檔名為 newfile 第二種 在 directory 目錄中,為 existingfile list 中包含的所有檔案建立乙個同名...

linux軟硬鏈結區別

1 硬鏈結 一般情況下,檔名和inode號碼是 一一對應 關係,每個inode號碼對應乙個檔名。但是,unix linux系統允許,多個檔名指向同乙個 inode號碼。這意味著,可以用不同的檔名訪問同樣的內容 對檔案內容進行修改,會影響到所有檔名 但是,刪除乙個檔名,不影響另乙個檔名的訪 問。這種情...

Linux 軟硬鏈結區別

一 硬鏈結 和 軟鏈結 鏈結的概念 鏈結簡單說實際上是一種檔案共享的方式,是 posix 中的概念,主流檔案系統都支援鏈結檔案。鏈結的作用 可以將鏈結簡單地理解為 windows 中常見的快捷方式 或是 osx 中的替身 linux 中常用它來解決一些庫版本的問題,通常也會將一些目錄層次較深的檔案鏈...