1. 程式人生 > >使用ln命令在Linux系統中建立連結檔案

使用ln命令在Linux系統中建立連結檔案

在Linux中ln命令用來為檔案建立連線,連線型別分為硬連線(Hard Link)和符號連線(Symbolic Link)兩種,預設的連線型別是硬連線。如果要建立符號連線必須使用"-s"選項。
關於軟硬連線解釋 硬連線

硬連線是指通過索引節點來進行連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別系統都會給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個檔名指向同一索引節點是存在的,一般這種連線就是硬連線。硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線,所以只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個硬連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

軟連線

符號連線(Symbolic Link),也叫軟連線。軟連結檔案又類似於Windows的快捷方式。它實際上是一個特殊的檔案。在符號連線中,該檔案實際上是一個文字檔案,其中包含著另一檔案的位置資訊。

通過實驗加深理解 建立不同的型別的檔案連線
[email protected]:~/test# touch file1        #建立一個測試檔案
[email protected]:~/test# ln file1 file2     #建立file的一個硬連線檔案file2
[email protected]:~/test# ln -s file1 file3  #建立file的一個符號連線檔案file3
[email protected]
:~/test# ls -li            #-l引數以單列格式輸出檔案資訊,-i引數輸出檔案的inode節點資訊 total 0 28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file1 28125 -rw-r--r-- 2 root root 0 Feb 16 08:29 file2 31463 lrwxrwxrwx 1 root root 5 Feb 16 08:30 file3 -> file1

從上面的結果中可以看出,硬連線檔案file2與原檔案file1的inode節點相同,均為28125,然而符號連線檔案的inode節點不同。

分別對檔案進行操作
[email protected]:~/test# cat >>file1 <<EOF             #向檔案file1追加內容
> 12345
> EOF
[email protected]:~/test# cat file1                     #輸出檔案file1內容
12345
[email protected]:~/test# cat file2                     #輸出檔案file2內容
12345
[email protected]:~/test# cat file3                     #輸出檔案file3內容
12345
[email protected]:~/test# rm file1                      #刪除檔案file1
[email protected]:~/test# cat file2
12345
[email protected]:~/test# cat file3
cat: file3: No such file or directory

通過上面的測試可以看出:當刪除原始檔案file1後,硬連線檔案file2不受影響,但是符號連線檔案file1無效。

總結

依此你可以做一些相關的測試,可以得到以下全部結論:
1. 刪除符號連線file3,對檔案file1,file2無影響;
2. 刪除硬連線file2,對檔案file1,file3也無影響;
3. 刪除原檔案file1,對硬連線檔案file2沒有影響,但是會導致符號連線file3失效;
4. 同時刪除原檔案file1以及硬連線檔案file2,整個檔案才會真正的被刪除。