硬連接與軟連接詳解

引言

Linux基礎是很是重要得,不管是工做仍是咱們平時得學習,掌握Linux對你的學習道路必定能提供很多幫助。html

下面簡單的介紹下Linux中的硬連接軟鏈接,爲了你更好的理解我下面的分享,你須要掌握Linux中的inode概念,若是你還不知道,推薦你到個人另外一篇分享,先了解inode。傳送門node

硬連接

什麼是硬連接

Linux中文件的inode號碼與文件名通常都是一對一的關係,可是也能夠多個一對多(多個文件名指向一個inode號碼),稱爲硬連接。git

特色

  1. 能夠用不一樣的文件名訪問一樣的內容github

  2. 對其中一個文件內容修改時,會影響到其餘文件的內容。vim

  3. 刪除其中一個文件時,其餘文件能夠正常訪問,不受影響bash

實例

首先,建立一個測試文件一,並寫入 "作個哎記錄的人"post

vim 1.txt
複製代碼

Laravel

接着建立一個硬連接學習

格式:ln 源文件 目標文件測試

ln 1.txt 2.txt
複製代碼

Laravel

能夠看到執行命令後多了個2.txtspa

咱們打開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 、硬連接、軟鏈接已經掌握得差很少了,但願能幫助到在看得你。

我的博客

原文

相關文章
相關標籤/搜索