硬連結與軟連結詳解

NaturalGao發表於2019-12-17

引言

Linux基礎是非常重要得,無論是工作還是我們平時得學習,掌握Linux對你的學習道路一定能提供不少幫助。

下面簡單的介紹下Linux中的硬連結軟連線,為了你更好的理解我下面的分享,你需要掌握Linux中的inode概念,如果你還不知道,推薦你到我的另一篇分享,先了解inode。傳送門

硬連結

什麼是硬連結

Linux中檔案的inode號碼與檔名一般都是一對一的關係,但是也可以多個一對多(多個檔名指向一個inode號碼),稱為硬連結。

特點

  1. 可以用不同的檔名訪問同樣的內容

  2. 對其中一個檔案內容修改時,會影響到其他檔案的內容。

  3. 刪除其中一個檔案時,其他檔案可以正常訪問,不受影響

例項

首先,建立一個測試檔案一,並寫入 "做個哎記錄的人"

vim 1.txt

Laravel

接著建立一個硬連結

格式:ln 原始檔 目標檔案

ln 1.txt 2.txt

Laravel

可以看到執行命令後多了個2.txt

我們開啟2.txt看看~~

vim 2.txt

Laravel

發現內容跟1.txt 一樣,跟copy差不多,但也是有取別:

硬連結,無論是修改原始檔還是目標檔案,是會影響其它檔案的,而copy後的檔案修改是不會影響原始檔的,而為什麼不會影響到呢,無非就是inode的問題

我 copy 2.txt 到 3.txt,

我們可以通過一下命令來檢視區別:

ls -i

Laravel

從圖中可以發現, 1和2的 inode號碼是一樣的,所以修改其中一個檔案,其餘檔案內容會隨之變化. copy出來的3.txt 生成了個新的inode號碼,所以是不會影響原始檔的。所以驗證了我們上面那個結論。

我們再驗證一下,修改 inode號碼一樣的檔案,其它檔案是否會隨之改變。

我開啟2.txt 修改裡面的內容,看1.txt是否有更新

Laravel

發現1.txt也更新了

驗證了我們的1,2條結論。

那我們把 2.txt 刪除試試

Laravel

發現 1.txt 還在,第三條結論也沒有問題。

軟連結

通過上面的驗證,相信大家對Linux 的硬連結,應該掌握得差不多了,那我們接著來講講軟連線,如果你已經掌握了硬連結,那軟連線 很快就能掌握。

硬連結和軟連線區別

  1. 硬連結inode號碼一致,軟連線相反。

  2. 硬連結讀的內容是不同檔案的內容,軟連讀的是原始檔的內容。

例項

通過以下命令建立一個軟連線

命令結構:ln 原始檔 目標檔案

ln -s 1.txt 2.txt

Laravel

觀察2.txt 後面,什麼意思呢,就是 把2.txt路徑指向1.txt的路徑,當我們訪問2.txt的時候,實際讀取的是1.txt的內容。

我們訪問 2.txt看看

vim 2.txt

Laravel

內容一致,沒問題。怎麼驗證我們上面說的實際讀取的是1.txt的內容呢?很好驗證,我們把1.txt刪除了。

Laravel

明顯看到,刪除1.txt 後 字變紅了,為什麼呢?很好理解,有錯誤,檔案找不到了嘛,我們把1.txt刪除了,而2.txt還指向1.txt,一個不存在的檔案。

我們試著訪問下2.txt

cat 2.txt

Laravel

發現報了個錯誤,檔案找不到,所以我們的結論沒有問題。

篇尾

相信到這裡你對Linux的 inode 、硬連結、軟連線已經掌握得差不多了,希望能幫助到在看得你。

個人部落格

原文

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章