硬鏈結為什麼不能跨目錄和檔案系統

2021-09-29 16:37:52 字數 516 閱讀 7049

關於為什麼不能跨檔案系統?。首先,不同的檔案系統的檔案管理方式不同,甚至有些檔案系統不是索引檔案系統,並不一定兩個檔案系統的inode有相同的含義。再者,即使有相同inode含義,硬鏈結的幾個檔案,具有相同的inode號碼。不同檔案系統中,也可能有使用該inode號的檔案,這將產生矛盾。

那不能 hard link 到目錄又是怎麼回事呢?

因為如果使用 hard link 鏈結到目錄時, 鏈結的資料需要連同被鏈結目錄下面的所有資料都建立鏈結,舉例來說,如果你要將 /etc 使用實體鏈結建立乙個 /etc_hd 的目錄時,那麼在 /etc_hd 下面的所有檔名同時都與 /etc 下面的檔名要建立 hard link 的,而不是僅鏈結到 /etc_hd 與 /etc 而已。 並且,未來如果需要在 /etc_hd 下面建立新檔案時,連帶的, /etc 下面的資料又得要建立一次 hard link ,因此造成環境相當大的複雜度。 所以,目前 hard link 對於目錄暫時還是不支援的!

參考此文章

為什麼硬鏈結不能指向目錄

linux系統中的硬連線有兩個限制 不能跨越檔案系統和不允許普通使用者對目錄作硬連線。至於第乙個限制,很好理解,而第二個就不那麼好理解了。我們對任何乙個目錄用ls l 命令都可以看到其連線數至少是2,這也說明了系統中是存在硬連線的,而且命令ln d 也可以讓超級使用者對目錄作硬連線,這些都說明了系統...

Linux中為什麼硬鏈結不能指向目錄

說法一 如果使用 hard link 鏈結到目錄時,鏈結的資料需要連同被鏈結目錄底下的所有資料都建立鏈結,舉例來說,如果你要將 etc 使用實體鏈結建立乙個 etc hd 的目錄時,那麼在 etc hd 底下的所有檔名同時都與 etc 底下的檔名要建立 hard link 的,而不是僅鏈結到 etc...

linux 目錄有沒有硬鏈結

至於第乙個限制,很好理解,而第二個就不那麼好理解了。我們對任何乙個目錄用ls l 命令都可以看到其連線數至少是2,這也說明了系統中是存在硬連線的,而且命令ln d也可以讓超級使用者對目錄作硬連線,這些都說明了系統限制對目錄進行硬連線只是乙個硬性規定,並不是邏輯上不允許或技術上的不可行。那麼作業系統為...