硬鏈結和軟連線的區別

2021-09-30 05:36:26 字數 2111 閱讀 4734

要說明這個問題,先說明下liunx下檔案和目錄的本質。

事實上,在liunx上,目錄也是檔案的一種,它是儲存了一張表的檔案。例如有乙個叫程式的資料夾,裡面有兩個檔案1和2.在那張目錄表內。它的內容是這樣的

名稱 節點

1 338

2 228

那麼什麼是節點呢?c語言我們都學過,我們簡單地把節點號理解成乙個陣列的下標,把記憶體看成乙個大陣列,每個檔案都可以看成乙個陣列中的乙個元素,而知道了節點號,就可以找到了實質的檔案內容。

上面說明了具體的原理。如果要通俗點理解。可以把硬鏈結當成原始檔的副本,它顯示跟原始檔一樣的大小但事實上卻不佔任何空間。(夠神奇吧)而軟連線大可以理解出windows的快捷方式。

至於更深入的區別,歡迎一起來討論

硬鏈結和軟鏈結的區別

一 鏈結檔案

鏈結有兩種方式,軟鏈結和硬鏈結。

1 軟鏈結檔案

軟鏈結又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。

鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為"斷鏈"的問題(或曰「現象"),鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。

用ln -s 命令可以生成乙個軟連線,如下:

[root@linux236 test]# ln -s  source_file softlink_file

在對符號檔案進行讀或寫操作的時候,系統會自動把該操作轉換為對原始檔的操作,但刪除鏈結檔案時,系統僅僅刪除鏈結檔案,而不刪除原始檔本身。

2 硬鏈結檔案

info ln 命令告訴您,硬鏈結是已存在檔案的另乙個名字(a "hard link" is another name for an existing file),這多少有些令人困惑。硬連線的命令是

ln -d existfile newfile

硬鏈結檔案有兩個限制

1)、不允許給目錄建立硬鏈結;

2)、只有在同一檔案系統中的檔案之間才能建立鏈結。

對硬鏈結檔案進行讀寫和刪除操作時候,結果和軟鏈結相同。但如果我們刪除硬鏈結檔案的原始檔,硬鏈結檔案仍然存在,而且保留了願有的內容。

這時,系統就「忘記」了它曾經是硬鏈結檔案。而把他當成乙個普通檔案。

二  兩者之間的區別

硬連線指通過索引節點來進行的連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。

在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要

檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個

連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。

三  個人體會

軟鏈結是另乙個檔案,作用可以理解為乙個指標,作用在這個檔案上的操作除了刪除都直接轉向實際指向檔案,由於是乙個真實的檔案所以占用磁碟空間

硬鏈結可以認為不是乙個檔案,它只是實際檔案的乙個別名,它的作用是防止真實檔案被誤操作,給乙個檔案建立硬鏈結後,他們互為別名,刪除其中任意乙個,

只會刪除該別名,實際檔案並不會被刪除。由於只是別名沒有任何其他資訊,所以並不占用原始檔案大小的磁碟空間。

octapult 寫到:

這邊有關 inode 的部份似乎講反了。

hard link 並沒有另外建立乙個 inode,而是增加乙個 directory entry,內容為原始檔案的 inode number、這個 hard link 的檔名稱和

其他相關資訊,所以 hard link 的 inode number 跟原始檔案的 inode number 是一樣的。在建立 soft link 的時候才會建立乙個新的

inode 指到原始檔案的 inode,所以 soft link 的 inode number 跟原始檔案的 inode number 不一樣。這也是為甚麼 hard link 只能指向

同乙個檔案系統裡面的檔案,因為每個檔案系統都有它自己一系列的 inode,兩個不同的檔案系統可能有相同的 inode number。

而 soft link 具有完整的 pathname,所以他可以跨越不同的檔案系統。

硬鏈結和軟連線的區別

linux硬鏈結和軟鏈結的區別 簡而言之,軟鏈結相當於windows中的快捷方式,硬鏈結相當於乙個災備系統,資料存放在兩處,與複製不同 的是兩處之間存在同步機制,一處資料的改變會實時同步到另一處,另外,一處資料如果被刪除了,不會影響 到另一處的資料.下面是詳細的介紹 硬連線指向的是節點 inode ...

軟連線和硬鏈結的區別

首先我們先來了解一下linux中檔案的組成 stat命令檢視i 節點資訊 在linux中檢視乙個檔案的內容是如何找到資料的呢?每個檔案都會有自己對應的inode號,檢視檔案時他會根據自己的inode號找到找到自己相應的blocks也就是資料 接下來就重點講一下硬鏈結和軟連線的使用和區別 硬鏈結 就是...

硬鏈結和軟連線的區別

硬鏈結和軟連線的主要區別在於 硬鏈結和原始檔具有相同的inode節點號和block,硬鏈結和原始檔是同一份檔案。軟連線和原始檔的inode節點號不同,進而指向的block也不同,軟連線block中存放了原始檔的路徑名 原始檔和硬鏈結檔案擁有相同的inode和block 修改任意乙個檔案,另乙個都改變...