軟鏈接與硬鏈接是用來乾什麼的呢? 為解決文件的共用使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共用使用,還帶來了隱藏文件路徑、增加許可權安全及節省存儲等好處。 ...
軟鏈接與硬鏈接是用來乾什麼的呢?
為解決文件的共用使用,Linux 系統引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統解決了文件的共用使用,還帶來了隱藏文件路徑、增加許可權安全及節省存儲等好處。
1.硬鏈接(基於索引節點的共用方式)
由於linux下的文件是通過索引節點(Inode)來識別文件,硬鏈接可以認為是一個指針,指向文件索引節點的指針,系統並不為它重新分配inode。每添加一個硬鏈接,文件的鏈接數就加1。
硬鏈接存在的問題
當多個用戶共用一個文件時,文件所有者刪除了該文件,也就是刪除了該文件的索引結點,那麼其他用戶指向該索引節點的指針就會懸空。
2.軟鏈接(基於符號鏈實現的文件共用)
為了使用戶b共用用戶a的文件F,由操作系統創建一個LINK類型的新文件,也叫F,它被寫入到用戶b的目錄中,以實現用戶b的目錄與文件F的鏈接。同名新文件只包含F的路徑名。這樣的鏈接方法叫符號鏈接(軟鏈接)。
只有文件的所有者才擁有指向其索引節點的指針,而共用該文件的其他用戶只有該文件的路徑名,並不擁有指向其索引節點的指針。這樣就避免了指針懸空的問題。
軟鏈接剋服了硬鏈接的不足,沒有任何文件系統的限制,任何用戶可以創建指向目錄的符號鏈接。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對文件進行鏈接。
總結區別如下:
硬鏈接的查找速度比軟鏈接快。
硬鏈接是多個指針指向一個 inode 節點,而軟鏈接則是創建多個新的link文件,link裡面存放目標文件路徑。
硬鏈接會刪除增加會改變被訪問文件的鏈接計數,軟鏈接不會。
硬鏈接無法跨分區、跨設備建立,軟鏈接可以。