當(dāng)前位置:首頁 > IT技術(shù) > 系統(tǒng)服務(wù) > 正文

linux 硬鏈接和軟連接
2022-02-14 14:18:10


硬鏈接和軟連接

Linux鏈接概念

Linux鏈接分兩種,一種被稱為硬鏈接(Hard Link),另一種被稱為符號鏈接(Symbolic Link)。默認(rèn)情況下,ln命令產(chǎn)生硬鏈接。

【軟連接】【ln -s 源文件名 軟連接文件名】

另外一種連接稱之為符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似于Windows的快捷方式。它實(shí)際上是一個特殊的文件。在符號連接中,文件實(shí)際上是一個文本文件,其中包含的有另一文件的位置信息。創(chuàng)建一 個軟連接就是給指定的文件創(chuàng)建了一個快捷方式,里面只記錄一個源文件的路徑,使用的時候其實(shí)就是間接的使用源文件,不考慮具體的實(shí)現(xiàn),從使用的層面上就這么簡單。如果源文件刪除了,這個軟連接也就沒有什么用了,因?yàn)樗涗浀穆窂较旅嬉呀?jīng)沒有文件或文件夾了,效果就和windows下面的exe都沒有了,你雙擊快捷方式的效果一樣,正因?yàn)檐涍B接只是記錄一個路徑,所以他可以跨文件系統(tǒng)使用。

【硬連接】【ln -d 源文件名 硬連接文件名】

硬連接指通過索引節(jié)點(diǎn)來進(jìn)行連接。在Linux的文件系統(tǒng)中,保存在磁盤分區(qū)中的文件不管是什么類型都給它分配一個編號,稱為索引節(jié)點(diǎn)號(Inode Index)。在Linux中,多個文件名指向同一索引節(jié)點(diǎn)是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因?yàn)閷?yīng)該目錄的索引節(jié)點(diǎn)有一個以上的連接。只刪除一個連接并不影響索引節(jié)點(diǎn)本身和其它的連接,只有當(dāng)最后一個連接被刪除后,文件的數(shù)據(jù)塊及目錄的連接才會被釋放。也就是說,文件真正刪除的條件是與之相關(guān)的所有硬連接文件均被刪除。在Linux里面訪問的每個文件都有一個inode結(jié)點(diǎn)的東西,在這個東西里面有一個連接計(jì)數(shù),軟連接的時候不涉及這個東西,如果對一個文件創(chuàng)建一個硬連接,則這個文件對應(yīng)的inode的連接計(jì)數(shù)就加1,這個時候其實(shí)這個inode對應(yīng)的文件有兩個名稱可以進(jìn)行訪問,這兩個名稱現(xiàn)在是一樣的,你可以使用任意一個繼續(xù)創(chuàng)建硬連接,所以創(chuàng)建的硬連接和源文件是一樣的,共享同一個inode,如果刪除了一個則連接計(jì)數(shù)就減1,刪不刪除文件是根據(jù) 連接的計(jì)數(shù)值來確定的,如果為0了,就刪了,否則,刪除只是連接計(jì)數(shù)減1。硬連接不能跨文件系統(tǒng)創(chuàng)建,并且只能對文件創(chuàng)建,不能對目錄創(chuàng)建硬連接。

實(shí)驗(yàn)

測試inode結(jié)點(diǎn)

root@ubuntu:/home/wangji/test# touch f1 #創(chuàng)建一個測試文件f1
root@ubuntu:/home/wangji/test# ln f1 f2 #創(chuàng)建f1的一個硬連接文件f2
root@ubuntu:/home/wangji/test# ln -s f1 f3 #創(chuàng)建f1的一個符號連接文件f3

root@ubuntu:/home/wangji/test# ls -li #-i參數(shù)顯示文件的inode節(jié)點(diǎn)信息
total 0
3673414 -rw-r--r-- 2 root root 0 May 14 18:42 f1
3673414 -rw-r--r-- 2 root root 0 May 14 18:42 f2
3673415 lrwxrwxrwx 1 root root 2 May 14 18:42 f3 -> f1

從上面的結(jié)果中可以看出,硬連接文件f2與原文件f1的inode節(jié)點(diǎn)相同,均為3673414,然而符號連接文件的inode節(jié)點(diǎn)不同。因?yàn)榉线B接是一種特殊的文件

測試刪除影響

root@ubuntu:/home/wangji/test# echo "I'm f1 file" >>f1  #添加文件信息F1
root@ubuntu:/home/wangji/test# cat f1
I'm f1 file
root@ubuntu:/home/wangji/test# cat f2
I'm f1 file
root@ubuntu:/home/wangji/test# cat f3
I'm f1 file
root@ubuntu:/home/wangji/test# rm -f f1
root@ubuntu:/home/wangji/test# cat f2
I'm f1 file
root@ubuntu:/home/wangji/test# cat f3
cat: f3: No such file or directory

通過上面的測試可以看出:當(dāng)刪除原始文件f1后,硬連接f2不受影響,但是符號連接f1文件無效

總結(jié)

依此您可以做一些相關(guān)的測試,可以得到以下全部結(jié)論:

1).刪除符號連接f3,對f1,f2無影響;

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

3).刪除原文件f1,對硬連接f2沒有影響,導(dǎo)致符號連接f3失效;

4).同時刪除原文件f1,硬連接f2,整個文件會真正的被刪除。



本文摘自 :https://blog.51cto.com/u

開通會員,享受整站包年服務(wù)立即開通 >