引言
Linux基礎是非常重要得,無論是工作還是我們平時得學習,掌握Linux對你的學習道路一定能提供不少幫助。
下面簡單的介紹下Linux中的硬連結和軟連線,為了你更好的理解我下面的分享,你需要掌握Linux中的inode概念,如果你還不知道,推薦你到我的另一篇分享,先了解inode。傳送門
硬連結
什麼是硬連結
Linux中檔案的inode號碼與檔名一般都是一對一的關係,但是也可以多個一對多(多個檔名指向一個inode號碼),稱為硬連結。
特點
-
可以用不同的檔名訪問同樣的內容
-
對其中一個檔案內容修改時,會影響到其他檔案的內容。
-
刪除其中一個檔案時,其他檔案可以正常訪問,不受影響
例項
首先,建立一個測試檔案一,並寫入 "做個哎記錄的人"
vim 1.txt
接著建立一個硬連結
格式:ln 原始檔 目標檔案
ln 1.txt 2.txt
可以看到執行命令後多了個2.txt
我們開啟2.txt看看~~
vim 2.txt
發現內容跟1.txt 一樣,跟copy差不多,但也是有取別:
硬連結,無論是修改原始檔還是目標檔案,是會影響其它檔案的,而copy後的檔案修改是不會影響原始檔的,而為什麼不會影響到呢,無非就是inode的問題
我 copy 2.txt 到 3.txt,
我們可以通過一下命令來檢視區別:
ls -i
從圖中可以發現, 1和2的 inode號碼是一樣的,所以修改其中一個檔案,其餘檔案內容會隨之變化. copy出來的3.txt 生成了個新的inode號碼,所以是不會影響原始檔的。所以驗證了我們上面那個結論。
我們再驗證一下,修改 inode號碼一樣的檔案,其它檔案是否會隨之改變。
我開啟2.txt 修改裡面的內容,看1.txt是否有更新
發現1.txt也更新了
驗證了我們的1,2條結論。
那我們把 2.txt 刪除試試
發現 1.txt 還在,第三條結論也沒有問題。
軟連結
通過上面的驗證,相信大家對Linux 的硬連結,應該掌握得差不多了,那我們接著來講講軟連線,如果你已經掌握了硬連結,那軟連線 很快就能掌握。
硬連結和軟連線區別
-
硬連結inode號碼一致,軟連線相反。
-
硬連結讀的內容是不同檔案的內容,軟連讀的是原始檔的內容。
例項
通過以下命令建立一個軟連線
命令結構:ln 原始檔 目標檔案
ln 1.txt 2.txt
觀察2.txt 後面,什麼意思呢,就是 把2.txt路徑指向1.txt的路徑,當我們訪問2.txt的時候,實際讀取的是1.txt的內容。
我們訪問 2.txt看看
vim 2.txt
內容一致,沒問題。怎麼驗證我們上面說的實際讀取的是1.txt的內容呢?很好驗證,我們把1.txt刪除了。
明顯看到,刪除1.txt 後 字變紅了,為什麼呢?很好理解,有錯誤,檔案找不到了嘛,我們把1.txt刪除了,而2.txt還指向1.txt,一個不存在的檔案。
我們試著訪問下2.txt
cat 2.txt
發現報了個錯誤,檔案找不到,所以我們的結論沒有問題。
篇尾
相信到這裡你對Linux的 inode 、硬連結、軟連線已經掌握得差不多了,希望能幫助到在看得你。