linux基礎學習筆記五:軟鏈接和硬鏈接

一、Linux 下的鏈接種類

  • 軟鏈接:類似於 windows系統中的快捷方式,與硬鏈接不同,軟鏈接就是一個普通文件,只是數據塊內容有點特殊,文件用戶數據塊中存放的內容是另一文件的路徑名的指向,通過這個方式可以快速定位到軟連接所指向的源文件實體。
  • 硬鏈接:通過文件系統的 inode 進行鏈接,類似於 windows系統中的複製,但是不產生新的文件。

二、什麼是 inode?

inode 是用來存放文件信息的,每個文件都會佔用一個 inode,並且這個 inode 號是唯一的,文件的內容都是 inode 來指定的,而不是文件名,當系統要訪問文件時,inode 就會被複制到內存,從而實現文件的快速訪問,使用 ls -i命令則可以看到 inode 號。
在這裏插入圖片描述
在這裏插入圖片描述

三、如何創建硬鏈接?

可以用 ln 命令來建立硬連接。
格式:ln 源文件 目標文件
常用參數-f無論目標文件是否存在都要創建連接。

在這裏插入圖片描述
在例子中我們可以發現 test1.c 和 test2.c 他們的 inode 號碼都是 44564692。因爲inode 號一樣,所有這個倆個文件的權限和屬性也是一模一樣的,也是 test1.c 和 test2.c 是倆個完全一樣的文件。
在這裏插入圖片描述
連接數也由 1 變成了 2,這個代表的是有多少個檔名鏈接到了這個 inode 號。在這裏插入圖片描述
再創建一個硬連接。使用 ln test1.c tset3.c 命令後,則會發現我們這個連接數從2 變成了 3
在這裏插入圖片描述

使用硬鏈接的優缺點是什麼?

優點

方便;雖然類似於 win 的複製,但是通常並不佔用實際空間。而且不管我們是修改 test1.c 或者是修改 test2.c 還是 test3.c,只要修改一個,我們的文件就會被同時修改,因爲他們的 inode 號都是相同的。

我們修改 test3.c 的內容爲如下圖所示:
在這裏插入圖片描述
test1.c 和 test2.c 的內容也被修改成了 nihao,如下圖所示:
在這裏插入圖片描述

安全:防止誤刪除,我們刪除 test1.c 或者是 test2.c 或 test3.c 任意一個,我們還是可以通過剩下的連接來訪問文件。除非都刪掉。

我們刪掉 test1.c。但是 test2.c 或 test3.c 還是可以訪問到“nihao”這個內容。在這裏插入圖片描述
缺點
只能在同一個文件系統纔可以創建硬連接(因爲不同的文件系統管理方式不同),並且目錄之間不能創建硬連接。(太複雜,現在還不支持)

四、如何創建軟鏈接?

可以用 ln 命令來建立軟連接。
格式:ln -s 源文件 目標文件(必須加上-s 參數,使用 ln 如果不加任何參數的話,那麼就是 Hard Link,而且源文件要用絕對路徑)。
在這裏插入圖片描述
在這裏插入圖片描述
上圖中我們可以發現 test1.c 和 test2.c 的 inode 號是不一樣的,所以這個倆個文件是完全獨立的,總之軟連接就是創立了一個新的文件,當訪問這個連接文件的時候,系統就會發現他是一個連接文件,然後讀取連接文件找到真正要訪問的文件。

因爲類似於 win 的快捷方式,我們刪掉源文件 test2.c ,test1 就不能打開了,如下圖所示:在這裏插入圖片描述
軟連接雖然沒有硬鏈接安全,但是限制少,所以使用範圍還是很廣泛的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章