目錄
0.文件系統
?1.軟硬鏈接
1.1見一下軟硬鏈接
1.2軟硬鏈接的特征
1.3軟硬鏈接是什么,有什么作用(場景)
0.文件系統
Linux--文件系統-CSDN博客
?1.軟硬鏈接
1.1見一下軟硬鏈接
1.這是軟鏈接
這個命令在Unix和Linux系統中用于創建一個符號鏈接(也稱為軟鏈接或軟連接)。具體來說,
ln -s file2.txt file_soft.link
?命令做了以下事情:
-s
:這是一個選項,表示要創建一個符號鏈接(而不是硬鏈接)。file2.txt
:這是你要鏈接到的原始文件或目錄。file_soft.link
:這是你要創建的符號鏈接的名稱。????????執行這個命令后,
file_soft.link
?就會成為一個指向?file2.txt
?的符號鏈接。你可以像操作普通文件一樣操作?file_soft.link
,但實際上你只是在操作?file2.txt
。例如,如果你使用?cat
?命令查看?file_soft.link
?的內容,你將會看到?file2.txt
?的內容。
可以看到它們的inode是不一樣的
2.這是硬鏈接
和建立軟連接的區別就是,少了一個-s選項。
使用?
cat
?命令查看?file_hard.link
?的內容,你將會看到?file1.txt
?的內容。
可以看到它們的inode是一樣的。
1.2軟硬鏈接的特征
根據上面的現象:
硬鏈接的特征:
- 硬鏈接是指向文件系統中已存在文件的引用,它們與原始文件共享相同的inode(索引節點)號和數據塊。
- 硬鏈接只是文件的另一個名稱或別名,它們與原始文件沒有區別。
- 硬鏈接只能對已經存在的文件進行創建,不能跨文件系統或分區。
- 硬鏈接不能對目錄進行創建,只能對文件創建。
- 刪除一個硬鏈接文件并不會影響其他具有相同inode號的文件。只有當所有硬鏈接和原始文件都被刪除時,文件的數據塊才會被釋放。
軟鏈接(符號鏈接)的特征:
- 軟鏈接是一個特殊的文件,其數據塊內容是它所鏈接文件的路徑名。
- 軟鏈接可以跨越文件系統或分區,因為它只是保存了目標文件的路徑。
- 軟鏈接可以對文件或目錄進行創建。
- 如果刪除軟鏈接所指向的原始文件,軟鏈接就會變成“死鏈接”,因為它指向的文件已經不存在了,如果將軟鏈接文件刪除了,更不會影響目標文件,軟鏈接就相當于一個快捷方式從。
- 軟鏈接有自己的inode號,但與原始文件不同。
軟硬鏈接的區別:
- inode號:硬鏈接與原始文件共享相同的inode號,而軟鏈接則有自己的inode號。
- 跨文件系統:軟鏈接可以跨文件系統或分區創建,而硬鏈接則不能。
- 對目錄的引用:硬鏈接不能對目錄進行創建,而軟鏈接可以。
- 刪除影響:刪除一個硬鏈接文件并不會影響其他具有相同inode號的文件;而刪除軟鏈接所指向的原始文件,則會使軟鏈接變成“死鏈接”。
- 文件類型:硬鏈接不是特殊的文件類型,它與原始文件完全一致;而軟鏈接是特殊的文件類型,其數據塊內容是目標文件的路徑名。
我們還發現屬性中有一列硬鏈接數
1.3軟硬鏈接是什么,有什么作用(場景)
1.軟鏈接的使用場景:
假如我有一個這樣的項目結構;
然后我們再拷貝一個ls變成自己的可執行程序myls:
那如果我們的可執行程序被放到了一個很深的路徑下,我們就只能這樣運行我們的可執行程序,這就十分的麻煩了
????????創建軟鏈接(快捷方式),所以軟連接就是一個快捷方式,方便我們訪問/執行我們的目標文件。
系統下的軟鏈接:我們系統中有各種的庫,一般就用軟鏈接的方式,讓我們使用它們的名字,就能找到對應的庫
2.硬鏈接的使用場景:
我們給file1.txt建立了硬鏈接,我們可以看到硬鏈接(磁盤級的引用計數)數變成了2.
????????其實,硬鏈接就是一個文件名和inode的映射關系,建立硬鏈接,就是再指定目錄下,添加一個新的文件名和inode number 的映射關系。inode number就像一個指針,有兩個一樣的inode number指向同一個屬性,所以它的引用計數就是2(有2個文件名字符串通過inode number指向我的inode)。刪除一個文件名和inode的關系,引用計數就變為1,再將硬鏈接刪除,引用計數變為0,此時文件才會被刪除。
????????1.硬鏈接主要用于在文件系統中為同一物理文件創建多個訪問路徑。例如,你可能希望在不復制文件內容的情況下,將某個文件同時放置在多個目錄中。這時,你可以使用硬鏈接。這種方式也可以被理解成,為目標文件建立備份。
? ? ? ? 2.硬鏈接構建Linux的路徑結構,讓我們可以使用. ..來進行路徑定位。
? ? ? ? 我們新建了一個目錄test,當我們說一個目錄的引用計數為2時,這通常是因為每個目錄在其父目錄中都有一個條目(即一個硬鏈接),并且它自己還有一個指向自己的
.
(當前目錄)的硬鏈接。像bin目錄引用計數為3,這是因為bin內部還存在一個目錄指向通過inode number指向自己。? ? ? ? 在Linux中是不允許對目錄? 建立硬鏈接的,這會導致目錄循環。例如,如果目錄A硬鏈接到目錄B,而目錄B又硬鏈接回目錄A,那么在遍歷目錄結構時,系統可能會陷入無限循環,導致無法正確定位或訪問目錄。
至此我們可以知道定位一個文件,只有兩種方式:
? ? ? ? 1.通過路徑(軟連接)
? ? ? ? 2.直接找到目標文件的inode(通過inode number)(硬鏈接)