內容
Linux中的軟鏈接和硬鏈接是什麼?
1 象徵性的 還 軟鏈接 是原始文件的實際鏈接,但是 硬鏈接 原始文件的鏡像副本。如果刪除原始文件,軟鏈接就毫無價值,因為它指向一個不存在的文件。
但對於硬鏈接,情況正好相反。即使原始文件被刪除,硬鏈接仍然包含原始文件的數據。這是因為硬鏈接充當原始文件的鏡像副本。
簡而言之,軟鏈接
- 可以跨越多個文件系統
- 允許目錄之間的鏈接,
- 它具有與原始文件不同的 inode 編號和文件權限。
- 權限不更新。
- 只是原始文件的路徑,沒有內容。
硬鏈接
- 不能跨越文件系統邊界(也就是說,硬鏈接只能在同一個文件系統中工作)。
- 無法鏈接目錄。
- 具有與原始文件相同的 inode 編號和權限,
- 當您更改源文件的權限時,權限會更新。
- 您擁有原始文件的實際內容,因此即使原始文件已被移動或刪除,您也可以查看內容。
還是不明白?現在讓我向您展示一些現實世界的例子。
如何創建軟鏈接或符號鏈接
讓我們創造 "test"
.
$ mkdir test
改成 "test"
目錄:
$ cd test
然後創建一個名為 source.file
部分數據如下所示。
$ echo "Welcome to OSTechNix" >source.file
我們來看看source.file中的數據。
$ cat source.file Welcome to OSTechNix
是的, source.file
被創建。
然後創建一個符號或軟鏈接到 source.file
.
為此,請運行:
$ ln -s source.file softlink.file
對比一下兩者的數據 source.file
什麼時候 softlink.file
.
$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix
正如您在上面的輸出中看到的, softlink.file
顯示相同的數據 source.file
.
檢查 inode 和權限 softlink.file
什麼時候 source.file
.
$ ls -lia
示例輸出:
total 12 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file 11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
正如您在上面的屏幕截圖中看到的, 索引節點號(11665731
比較的 11665692
) 什麼時候 文件權限(lrwxrwxrwx
比較的 -rw-r--r--
) 是的 錯誤的,儘管如此 softlink.file
有相同的內容 source.file
因此證明軟鏈接與原始文件不共享相同的inode號和權限。
現在刪除原始文件(即 . source.file
) 讓我們看看發生了什麼。
$ rm source.file
檢查內容 softlink.file
使用命令:
$ cat softlink.file
示例輸出:
cat: softlink.file: No such file or directory

沒有這樣的文件或目錄,如上 softlink.file
刪除原始文件後(即 source.file
)。
現在我知道軟鏈接只是指向原始文件的鏈接。軟鏈接就像文件的快捷方式。刪除文件會使快捷方式無用。
如您所知,即使您刪除了軟鏈接,原始文件仍然可用。
推薦閱讀:
- 如何在 Linux 中列出符號鏈接
- 如何在 Linux 中查找和刪除損壞的符號鏈接
如何創建硬鏈接
創造 source.file
部分內容如下。
$ echo "Welcome to OSTechNix" >source.file
讓我們檢查一下文件的內容。
$ cat source.file Welcome to OSTechNix
這個 source.file
被創建。
所以讓我們創建一個指向 source.file
如下。
$ ln source.file hardlink.file

檢查內容 hardlink.file
:
$ cat hardlink.file Welcome to OSTechNix
你明白嗎 hardlink.file
顯示與 source.file 相同的數據。
檢查 inode 和權限 hardlink.file
什麼時候 source.file
.
$ ls -lia
示例輸出:
total 16 11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 . 4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 .. 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file 11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

現在我們看到了 hardlink.file
什麼時候 source.file
是一樣的嗎 索引節點數 (11665692
) 什麼時候 文件權限(-rw-r--r--
)所以我們知道硬鏈接文件與原始文件共享相同的 inode 計數和權限。
筆記: 如果您更改權限 source.file
相同的權限適用 hardlink.file
那個也是。
現在刪除原始文件(即 . source.file
) 讓我們看看發生了什麼。
$ rm source.file
檢查內容 hardlink.file
使用命令:
$ cat hardlink.file
示例輸出:

如您所見,即使我刪除源文件,我也可以看到 hardlink.file
這證明硬鏈接與原始文件共享相同的 inode 號、權限和數據。
那麼硬鏈接和普通拷貝文件有什麼區別呢?
您可能想知道,當您可以輕鬆複製/粘貼原始文件時,為什麼還要創建硬鏈接。創建文件的硬鏈接與復製文件不同。
複製文件僅複製內容。因此,更改一個文件(原始文件或硬鏈接)的內容不會影響另一個文件。
但是,如果您創建文件的硬鏈接並更改任一文件的內容,您將看到兩個文件中的更改。
看看source.file。
$ cat source.file Welcome to OSTechNix
源文件有“Welcome to OSTechNix”這一行。
添加一個新行,例如“Welcome to Linux” source.file
還 hardlink.file
.
$ echo "Welcome to Linux" >>source.file
檢查兩個文件的內容。
$ cat hardlink.file Welcome to OSTechNix Welcome to Linux
$ cat source.file Welcome to OSTechNix Welcome to Linux

看?剛剛做出的改變 source.file
在兩個文件中都進行了更新。含義 – 兩個文件(源文件和硬鏈接)同步。
在一個文件中所做的更改會反映在另一個文件中。通常,當我複制和粘貼文件時,我看不到其他文件中的新更改。
查看手冊頁以獲取更多詳細信息。
$ man ln
結論是
本指南解釋了 Linux 中的軟鏈接和硬鏈接,如何使用示例命令創建軟鏈接和硬鏈接,最後解釋了硬鏈接和純副本文件之間的區別。
我希望您對如何在 Linux 中使用符號鏈接或軟鏈接和硬鏈接有基本的了解。
BASHCLI 命令行硬鏈接LinuxLinux 基礎Linux 命令Linux 方法Linux 提示ln 命令軟鏈接符號鏈接UnixUnix 基礎