創建軟連接和硬鏈接

前言

硬鏈接的原理:使鏈接的兩個文件共享同樣的文件內容,也就是同樣的 inode。
硬鏈接有一個缺陷:只能創建指向文件的硬鏈接,不能創建指向目錄的硬鏈接。但軟鏈接可以指向文件或目錄。

軟鏈接的原理:就跟我們在window

ln 命令

創建鏈接(軟連接和硬鏈接)
linux中文件存儲的方式,是文件名和文件內容單獨分開存儲在硬盤上的。
每個文件的文件內容被分配到一個標示號碼,就是 inode。因此每個文件名都綁定到它的文件內容(用 inode 標識)

在這裏插入圖片描述

創建硬鏈接

cd
mkdir test
cd test

並且用 touch 命令創建一個新的空白文件:

touch file1

我們接着來創建一個文件 file2,使之成爲 file1 的硬鏈接。
要創建硬鏈接,直接用 ln 命令,不加任何參數:

ln file1 file2

以上命令創建了 file1 的一個硬鏈接 file2。
但是我們可以用 ls -i 命令查看一下(-i 參數可以顯示文件的 inode)。我們可以看到 file1 和 file2 的 inode 是一樣的,都是 655571。當然你的電腦上應該和我不一樣,是其它數字吧。

如果我們用 rm file2 來刪除 file2,那麼對 file1 沒什麼影響。如果我們用 rm file1 來刪除 file1,對 file2 也沒什麼影響。所以,對於硬鏈接來說,刪除任意一方的文件,共同指向的文件內容並不會從硬盤上被刪除。

只有既刪除 file1 又刪除 file2,它們共同指向的文件內容纔會消失,也就是那個 inode 纔會被刪去。
在這裏插入圖片描述
原理圖
在這裏插入圖片描述

創建軟鏈接

創建硬鏈接時 ln 命令不帶任何參數,但是要創建軟鏈接需要加上 -s 參數

ln -s file1 file2

用 ls -l 命令查看一下,會發現形式和之前的硬鏈接不一樣噢。file2 的信息是這樣的: file2->file1,表示 file2 指向 file1。

file2 的文件信息裏,第一列表示權限的第一個字母變成了 l,表示 link(鏈接)。之前硬鏈接的時候是沒有l的,硬鏈接外表看起來就和普通文件類似。file2 的顏色是淺藍色,也說明是鏈接文件。

我們用 ls -l 命令查看文件信息的時候,第二列的那個 1,表示擁有相同 inode 號的文件數。不難理解,因爲 file2 指向 file1,它們並沒有指向同一塊文件內容,所以它們的 inode 號不相同。

用 ls -i 看一下就知道了:

file1 的 inode 號仍然是 655571。而 file2 的 inode 號是 655574,不一樣。

打開 file2 查看,發現和 file1 是一樣的。這不難理解,因爲 file2 這個軟鏈接只是 file1 的一個快捷方式,它指向的是 file1,所以顯示的是 file1 的內容。但其實它自身的 inode 和 file1 並不一樣,也就是文件內容不一樣。

1 如果我們刪除了 file2,沒什麼大不了,file1 不會受到影響。但是如果刪除了 file1,那麼 file2 會變成“死鏈接”,因爲指向的文件不見了。
2 軟鏈接可以指向目錄,硬鏈接不行。

在這裏插入圖片描述
原理圖:
在這裏插入圖片描述

參考鏈接

該文爲本人學習的筆記,方便以後自己複習。參考以及圖片來自
慕課網專欄:https://www.imooc.com/read/39
取其精華整合而成。

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