Ubuntu中的兩種link的區別


Ubuntu中有兩種link(windows世界中文件的“快捷方式”),一個是hard link(硬鏈接),另一個是symbolic link(軟鏈接)。

那么,什么是硬鏈接,什么又是軟鏈接呢?

硬鏈接(hard link)

簡單的說,硬鏈接會鏈接到目標文件的內容,即便目標文件在鏈接之后被改了名字,又或者被刪掉了,硬鏈接以及硬鏈接的目標內容依然存在且有效。我們來做個實驗。

實驗過程設計:

1、創建一個文本文件origin;

2、向origin文件中寫入內容"lorem ipsum”;

3、建立一個硬鏈接origin_hard到origin文件;

4、顯示origin_hard內容;

5、刪除origin文件;

6、再次顯示origin_hard內容。

結果判定:

如果在刪除origin文件[1]之后origin_hard仍然可以顯示“lorem ipsum”,即可判斷硬鏈接是鏈接到文件內容的鏈接。

實驗過程:

n@ubt:~$ touch origin
n@ubt:~$ echo "lorem ipsum" >> origin
n@ubt:~$ cat origin
lorem ipsum
n@ubt:~$ ln origin origin_hard
n@ubt:~$ ls -l | grep origin
-rw-rw-r-- 2 n n   12 9月   5 23:05 origin
-rw-rw-r-- 2 n n   12 9月   5 23:05 origin_hard
n@ubt:~$ cat origin_hard
lorem ipsum
n@ubt:~$ rm origin
n@ubt:~$ ls -l | grep origin
-rw-rw-r-- 1 n n   12 9月   5 23:05 origin_hard
n@ubt:~$ cat origin_hard
lorem ipsum
n@ubt:~$ 

結論:

硬鏈接(hard link)是一種特殊的文件,鏈接到內容,而非另一個文件的路徑或地址(有別於軟鏈接symbolic link)。

讓我們再來看看軟鏈接(symbolic link)

軟鏈接(symbolic link)

軟鏈接是指向目標文件所在路徑的一種鏈接,也就是說,如果目標文件(以及文件內容)不存在了,指向這一文件地址的軟鏈接將會指向一個不存在的文件地址,從而產生訪問錯誤。與硬鏈接一樣,我們同樣通過一個實驗來驗證軟鏈接的特性。

實驗過程設計:

1、創建一個文本文件origin;

2、向origin文件中寫入“lorem ipsum”;

3、建立一個軟鏈接origin_soft,指向origin文件;

4、嘗試通過origin_soft顯示origin中的文本內容,用以驗證軟鏈接創建成功;

5、刪除origin文件;

6、嘗試再次通過origin_soft顯示其內容。

結果判定:

如果在刪除origin文件后,通過origin_soft不再可以顯示“lorem ipsum”內容,即可說明軟鏈接(symbolic link)僅是指向目標文件地址的鏈接,而非文件內容。

實驗過程:

n@nbt:~$ touch origin
n@nbt:~$ echo "lorem ipsum" >> origin
n@nbt:~$ ln -s origin origin_soft
n@nbt:~$ cat origin_soft 
lorem ipsum
n@nbt:~$ rm origin
n@nbt:~$ cat origin_soft
cat: origin_soft: No such file or directory
n@nbt:~$ 

結論:

軟鏈接(symbolic link)是指向目標文件地址的鏈接。當目標文件不存在時,軟鏈接也會失去其鏈接目標。

附錄

[1]文件——在Unix/Linux的世界中,文件(file)並非我們在windows操作系統中理解的那樣。Unix/Linux的文件是指一個(塊)數據,該數據沒有文件名,僅有一個ID號(inode)。如果可以理解這個概念,那么再回過頭來看硬鏈接(hard link),你就會發現創建一個硬鏈接的過程其實是在給同一個數據創建別名(一個新的文件名)。就拿上面我們的實驗舉例,“lorem ipsum”數據有一個文件名origin,之后我們又給了這個數據另一個文件名origin_hard。通過origin和origin_hard都可以訪問到數據“lorem ipsum”,見圖-1。

 

圖-1

在硬鏈接實驗環節我們刪除的origin文件,確切的說,並非將lorem ipsum數據刪掉了,而僅僅是刪除了origin文件(指向Lorem ipsum數據的名稱文件)。所以,數據並沒有被刪除,我們通過origin_hard文件依然可以訪問到Lorem ipsum數據。然而,軟鏈接並非如此,見圖-2。

圖-2

圖-2中,軟鏈接origin_soft文件指向origin文件。一旦origin文件被刪除,則Lorem ipsum數據將丟失所有指向其的有效引用。由於刪除origin文件后,origin_soft丟失了引用目標,導致系統無法通過origin_soft訪問Lorem ipsum數據。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM