內容

  1. Linux中的軟鏈接和硬鏈接是什麼?
  2. 如何創建軟鏈接或符號鏈接
  3. 如何創建硬鏈接
    1. 那麼硬鏈接和普通拷貝文件有什麼區別呢?
  4. 結論是

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
檢查符號鏈接的 inode 和權限

正如您在上面的屏幕截圖中看到的, 索引節點號(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
檢查硬鏈接 inode 和權限檢查硬鏈接 inode 和權限

現在我們看到了 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.filehardlink.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 基礎