天天看點

linux硬連結和軟連結的差別

1.Linux連結概念

Linux連結分兩種,一種被稱為硬連結(Hard Link),另一種被稱為符号連結(Symbolic Link)。預設情況下,ln指令産生硬連結。

【硬連接配接】

硬連接配接指通過索引節點來進行連接配接。在Linux的檔案系統中,儲存在磁盤分區中的檔案不管是什麼類型都給它配置設定一個編号,稱為索

引節點号(Inode

Index)。在Linux中,多個檔案名指向同一索引節點是存在的。一般這種連接配接就是硬連接配接。硬連接配接的作用是允許一個檔案擁有多個有效路徑名,這樣使用者

就可以建立硬連接配接到重要檔案,以防止“誤删”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連接配接。隻删除一個連接配接并不影響索引節點本身和

其它的連接配接,隻有當最後一個連接配接被删除後,檔案的資料塊及目錄的連接配接才會被釋放。也就是說,檔案真正删除的條件是與之相關的所有硬連接配接檔案均被删除。

硬連接配接的2個限制:

l  不允許給目錄建立硬連結

l  隻有在同一檔案系統中的檔案之間才能建立連結。 即不同硬碟分區上的兩個檔案之間不能夠建立硬連結。這是因為硬連結是通過結點指向原始檔案的,而檔案的i-結點在不同的檔案系統中可能會不同。

【軟連接配接】

另外一種連接配接稱之為符号連接配接(Symbolic Link),也叫軟連接配接。軟連結檔案有類似于Windows的快捷方式。它實際上是一個特殊的檔案。在符号連接配接中,檔案實際上是一個文本檔案,其中包含的有另一檔案的位置資訊。

      這就允許符号連結(經常簡寫為symlinks)指向位于其他分區、甚至是其他網絡硬碟上的某個檔案

2.通過實驗加深了解

[oracle@Linux]$ touch f1          #建立一個測試檔案f1

[oracle@Linux]$ ln f1 f2          #建立f1的一個硬連接配接檔案f2

[oracle@Linux]$ ln -s f1 f3       #建立f1的一個符号連接配接檔案f3

[oracle@Linux]$ ls -li            # -i參數顯示檔案的inode節點資訊

total 0

9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f1

9797648 -rw-r--r--  2 oracle oinstall 0 Apr 21 08:11 f2

9797649 lrwxrwxrwx  1 oracle oinstall 2 Apr 21 08:11 f3 -> f1

從上面的結果中可以看出,硬連接配接檔案f2與原檔案f1的inode節點相同,均為9797648,然而符号連接配接檔案的inode節點不同。

[oracle@Linux]$ echo "I am f1 file" >>f1

[oracle@Linux]$ cat f1

I am f1 file

[oracle@Linux]$ cat f2

[oracle@Linux]$ cat f3

[oracle@Linux]$ rm -f f1

cat: f3: No such file or directory

通過上面的測試可以看出:當删除原始檔案f1後,硬連接配接f2不受影響,但是符号連接配接f3檔案無效

3.總結

依此您可以做一些相關的測試,可以得到以下全部結論:

1).删除符号連接配接f3,對f1,f2無影響;

2).删除硬連接配接f2,對f1,f3也無影響;

3).删除原檔案f1,對硬連接配接f2沒有影響,導緻符号連接配接f3失效;

4).同時删除原檔案f1,硬連接配接f2,整個檔案會真正的被删除。

繼續閱讀