Linux系統中包括兩種鏈接方式:硬鏈接(hard link)和符號鏈接(symbolic link),其中符合鏈接就是所謂的軟鏈接(soft link),那么兩者之間到底有什么區別呢?
inode
在Linux系統中,內核為每一個新創建的文件分配一個inode,每個文件都有一個惟一的inode,這里將inode簡單理解成一個指針,它永遠指向本文件的具體存儲位置同時,文件屬性保存在inode里,比如owner等。在訪問文件時,inode被復制到內存,從而實現文件的快速訪問。系統是通過inode來定位每一個文件。
hard link
hard lin可以理解是一個指針,它指向源文件的inode,并不會產生新的inode。hard link不管有多少個,都指向的是同一個inode節點,只是新建一個hard link會把結點連接數增加,只要結點的連接數不是0,文件就一直存在,不管你刪除的是源文件還是連接的文件。只要有一個存在,文件就存在(其實就是引用counter的概念)。當你修改源文件或者連接文件任何一個的時候,其他的文件都會做同步的修改。可見下圖的示例。
symbolic link
symbolic link擁有獨立的inode,是一個獨立的文件,而文件的內容是源文件的路徑指針,因此可以通過symbolic訪問到源文件,因此刪除符號鏈接對源文件沒有影響,但是刪除了源文件,符號鏈接文件就無法找到指向的文件。這里可以想象成Windows中的快捷方式。
對比
1. 符號鏈接和源文件操作權限不一樣;硬鏈接與源文件操作權限完全一致。
2. 符號鏈接可以跨文件系統(分區);由于inode的限制以及文件系統的可卸載性,硬鏈接不容許跨文件系統。
3. 符號鏈接可以對一個不存在的文件名進行鏈接;硬鏈接不可以。
4. 符號鏈接可以對目錄進行連接;硬鏈接不可以。
原文:http://www.cnblogs.com/jingyzzz/p/6241139.html