Linux 文件系統最重要的特點之一是它的文件鏈接。鏈接是對文件的引用,這樣您可以讓文件在文件系統中多處被看到。不過,在 Linux 中,鏈接可以如同原始文件一樣來對待。鏈接可以與普通的文件一樣被執行、編輯和訪問。對系統中的其他應用程序而言,鏈接就是它所對應的原始文件。當您通過鏈接對文件進行編輯時,您編輯的實際上是原始文件。鏈接不是副本。有兩種類型的鏈接:硬鏈接和符號鏈接。
硬鏈接,只能引用同一文件系統中的文件。它引用的是文件在文件系統中的物理索引(也稱為 inode)。當您移動或刪除原始文件時,硬鏈接不會被破壞,因為它所引用的是文件的物理數據而不是文件在文件結構中的位置。硬鏈接的文件不需要用戶有訪問原始文件的權限,也不會顯示原始文件的位置,這樣有助於文件的安全。如果您刪除的文件有相應的硬鏈接,那么這個文件依然會保留,直到所有對它的引用都被刪除。
符號鏈接,是一個指針,指向文件在文件系統中的位置。符號鏈接可以跨文件系統,甚至可以指向遠程文件系統中的文件。符號鏈接只是指明了原始文件的位置,用戶需要對原始文件的位置有訪問權限才可以使用鏈接。如果原始文件被刪除,所有指向它的符號鏈接也就都被破壞了。它們會指向文件系統中並不存在的一個位置。兩種鏈接都可以通過命令 ln 來創建。ln 默認創建的是硬鏈接。使用 -s 開關可以創建符號鏈接。
符號鏈接與硬鏈接有什么區別?
簡單的說:硬連接記錄的是目標的 inode,符號連接記錄的是目標的 path。
軟連接就像是快捷方式,而硬連接就像是備份!符號連接可以做跨分區的 link;而 硬連接由於 inode 的緣故,只能在本分區中做 link.所以,符號連接的使用頻率要高的多。