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數據。