一、軟鏈接和硬鏈接的概念
在Linux文件系統中,鏈接是一種文件系統中的指向另一個文件或目錄的引用。軟鏈接(Symbolic Link或者叫做Symlink)和硬鏈接(Hard Link)是Linux中兩種不同的鏈接類型。
軟鏈接,也稱為符號鏈接,它是一種特殊的文件,它包含有另一文件或目錄的路徑信息。軟鏈接以“ln -s”命令建立,軟鏈接可以創建指向目錄或文件的鏈接,軟鏈接也可以創建指向不存在的文件或目錄的鏈接。
硬鏈接是將一個文件存在的目錄項指向同一個索引節點,也就是說,硬鏈接是指多個文件句柄指向同一個文件數據塊。硬鏈接可以理解為對同一文件的多個名字,通過“ln”命令建立。
二、軟鏈接和硬鏈接的區別
軟鏈接和硬鏈接的不同點1:文件類型
軟鏈接和硬鏈接的文件類型不同。軟鏈接是一個單獨的文件,它的文件類型是“偽文件”,文件大小只有原文件的幾個字節;而硬鏈接並不單獨佔用空間,它是一個與原文件完全相同的文件,文件類型是“普通文件”,也就是說,在硬鏈接創建之後,無論是原文件還是硬鏈接之間做的改動都會同時反映出來。
軟鏈接和硬鏈接的不同點2:路徑解析
軟鏈接和硬鏈接在解析路徑時的方式不同,硬鏈接通過文件的i節點來解析,軟鏈接通過文件路徑名來解析。
$ ls -li file1 2582235 -rw-r--r--. 2 user1 user1 6 Jul 9 11:31 file1 $ ln file1 file2 $ ln -s file1 file3 $ ls -li file{1,2,3} 2582235 -rw-r--r--. 3 user1 user1 6 Jul 9 11:31 file1 2582235 -rw-r--r--. 3 user1 user1 6 Jul 9 11:31 file2 2582236 lrwxrwxrwx. 1 user1 user1 5 Jul 9 11:32 file3 -> file1
從上述的代碼可知,file2是硬鏈接,file3是軟鏈接。在創建硬鏈接時,新增的硬鏈接文件file2,實際只是在文件系統中新增了一個目錄項,但是所有的目錄項都是與原文件file1關聯的。而軟鏈接則是在文件系統中新增了一個“偽文件”,這個“偽文件”指向了原文件file1。
軟鏈接和硬鏈接的不同點3:符號鏈接的作用範圍
因為軟鏈接是通過文件路徑名來解析的,所以軟鏈接對文件名的長度沒有限制,可以跨越文件系統,解析任意路徑上的文件;而硬鏈接只能建立在同一個文件系統中。
三、軟鏈接和硬鏈接的示例
下面我們來演示一下軟鏈接和硬鏈接的使用方法。
建立軟鏈接
使用“ln -s”命令來建立軟鏈接,例如:
$ touch file1 file2 $ ln -s file1 file3 $ ls -li file{1,2,3} 8197166 -rw-r--r-- 1 user1 user1 0 Jul 9 13:15 file1 8197167 -rw-r--r-- 1 user1 user1 0 Jul 9 13:15 file2 8197851 lrwxrwxrwx 1 user1 user1 5 Jul 9 13:15 file3 -> file1
從上面的例子中可知:建立軟鏈接時,file3指向的是file1的路徑。
建立硬鏈接
使用“ln”命令來建立硬鏈接,例如:
$ ln file1 file4 $ ls -li file{1,2,3,4} 8197166 -rw-r--r-- 2 user1 user1 0 Jul 9 13:15 file1 8197167 -rw-r--r-- 1 user1 user1 0 Jul 9 13:15 file2 8197851 lrwxrwxrwx 1 user1 user1 5 Jul 9 13:15 file3 -> file1 8197852 -rw-r--r-- 2 user1 user1 0 Jul 9 13:20 file4
從上面的例子中可知:因為file4是對file1的硬鏈接,所以修改其中任意一個文件都會同時反映出來;而且,通過“ls -li”命令也可以看出來,硬鏈接的索引節點編號是相同的。
刪除軟鏈接和硬鏈接
刪除軟鏈接和硬鏈接僅僅是刪除鏈接本身,而不是文件本身。
$ rm file3 $ rm file4
四、鏈接的使用場景
軟鏈接和硬鏈接在Linux系統中的應用非常廣泛,尤其是在文件共享、備份、存檔等方面有很好的效果。
軟鏈接可以方便地在文件間共享數據,並且不會造成不必要的文件複製。同時,在升級更新時,只需要改變軟鏈接的指向即可實現文件的更新。
硬鏈接通常用於類Unix系統的軟件管理中。例如,當我們安裝一個新軟件時,新軟件的所有文件都很可能會放在“/usr/local/bin”等目錄下,在軟件管理中,如果創建軟鏈接,那麼當我們卸載軟件後仍然會有一些殘留文件存在,造成垃圾文件的出現。而使用硬鏈接,這些文件都指向同一個索引節點,如果某個硬鏈接被刪除,只要文件本身還被其他硬鏈接文件佔用,那麼實際上該文件並不會被刪除。
總結
軟鏈接和硬鏈接是Linux系統中非常常用的兩種鏈接方式,通過本文的介紹,我們可以知道軟鏈接和硬鏈接的不同點,並且知道了軟鏈接和硬鏈接的使用方法。
原創文章,作者:LTKD,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144140.html