Linux硬連結和軟連結詳解(深度剖析)

2020-07-16 10:05:23
通過學習《Linux ln 命令》一節可以看到,使用 ln 命令建立硬連結和軟連結非常簡單,那這兩種連結有什麼區別,它們各自的作用和特點又是什麼?為了解開這些疑問,本節將對硬連結和軟連結做深度剖析。

對硬連結的深度剖析

首先,我們再來建立一個硬連結檔案,然後看看這兩個檔案的特點。

[[email protected] ~]# touch test
#建立原始檔
[[email protected] ~]# ln /root/test /tmp/test-hard
#給原始檔建立硬連結檔案 /tmp/test-hard
[[email protected] ~]# ll -i /root/test /tmp/test-hard
262147 -rw-r--r-- 2 root root 0 6月 19 10:06 /root/test
hard
262147 -rw-r--r-- 2 root root 0 6月 19 10:06 /tmp/test-hard
#檢視兩個檔案的詳細資訊,可以發現這兩個檔案的 inode 號是一樣的,"ll"等同於"ls -l"。

這裡有一件很奇怪的事情,我們之前在講 inode 號的時候說過,每個檔案的 inode 號都應該是不一樣的。inode 號就相當於檔案 ID,我們在查詢檔案的時候,要先查詢 inode 號,才能讀取到檔案的內容。

但是這裡原始檔和硬連結檔案的 inode 號居然是一樣的,那我們在查詢檔案的時候,到底找到的是哪一個檔案呢?我們來畫一張示意圖,如圖 2 所示。

硬鏈接示意圖
圖 2 硬連結示意圖