linux 鏈結分兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。
硬鏈結
硬鏈結指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。在 linux 中,多個檔名指向同一索引節點是存在的。比如:a 是 b 的硬鏈結(a 和 b 都是檔名),則 a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號相同,即乙個 inode 節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a 和 b 對檔案系統來說是完全平等的。刪除其中任何乙個都不會影響另外乙個的訪問。
硬鏈結的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬鏈結到重要檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬鏈結檔案均被刪除。
軟鏈結
另外一種鏈結稱之為符號連線(symbolic link),也叫軟鏈結。軟鏈結檔案有類似於 windows 的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。比如:a 是 b 的軟鏈結(a 和 b 都是檔名),a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號不相同,a 和 b 指向的是兩個不同的 inode,繼而指向兩塊不同的資料塊。但是 a 的資料塊中存放的只是 b 的路徑名(可以根據這個找到 b 的目錄項)。a 和 b 之間是「主從」關係,如果 b 被刪除了,a 仍然存在(因為兩個是不同的檔案),但指向的是乙個無效的鏈結。
[root@wulei /]
# cd home
[root@wulei home]
# touch f1 # 建立乙個測試檔案f1
[root@wulei home]
# ls
f1
[root@wulei home]
# ln f1 f2 # 建立f1的乙個硬鏈結檔案f2
[root@wulei home]
# ln -s f1 f3 # 建立f1的乙個軟鏈結檔案f3
[root@wulei home]
# ls
f1 f2 f3
[root@wulei home]
# ls -li
total 12
394186 -rw-r--r-- 2 root root 0 aug 31 11:31 f1
394186 -rw-r--r-- 2 root root 0 aug 31 11:31 f2
394996 lrwxrwxrwx 1 root root 2 aug 31 11:33 f3 -> f1
從上面的結果中可以看出,硬連線檔案 f2 與原檔案 f1 的 inode 節點相同,均為 397247,然而軟鏈結檔案的 inode 節點不同。
# echo 字串輸出 >> f1 輸出到 f1檔案
[root@wulei home]
# echo "i am f1 file" >> f1
[root@wulei home]
# cat f1
i am f1 file
[root@wulei home]
# cat f2
i am f1 file
[root@wulei home]
# cat f3
i am f1 file
[root@wulei home]
# rm -f f1
[root@wulei home]
# cat f2
i am f1 file
[root@wulei home]
# cat f3
cat: f3: no such file or directory
linux硬鏈結與軟鏈結
1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...
Linux 硬鏈結與軟鏈結
原貼 2007 08 05 10 19 49 linux硬鏈結與軟鏈結 2006 12 01 15 03 首先要弄清楚,在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案都有乙個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到內存在,從而實...
linux硬鏈結與軟鏈結
1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...