Linux 檔案連結



什麼是 Linux 中的檔案連結?

Linux 連結提供了一種機制,可以為現有檔案或目錄建立快捷方式或替代名稱,這意味著您可以為 Linux 中的同一檔案或目錄建立多個名稱,以便根據您的需求輕鬆訪問和使用它們。

Linux/Unix 提供兩種型別的連結

  • 軟連結或符號連結
  • 硬連結

符號連結

Linux 中的符號連結也稱為軟連結或符號連結。這是 Linux 中的一種特殊檔案,它指向另一個檔案或目錄。這個原始檔案或目錄可以位於同一個檔案系統或不同的檔案系統上。符號連結就像 Windows 中的快捷方式,它包含原始檔案的路徑,而不是內容。

Linux - Soft Links

您可以使用此檔案上的任何可用的符號連結訪問原始檔案資料,刪除符號連結不會影響目標檔案。但是,如果您刪除了原始檔案,則此檔案上的所有符號連結都將斷開,並且您的資料將無法再訪問。

如何建立符號連結

以下是為現有檔案建立符號連結的語法:

$ ln -s  file/directory symlink

此處檔案或目錄可以是完整的 檔案路徑或目錄,symlink 將是符號連結的名稱,它將指向該檔案或目錄。

首先,讓我們建立一個簡單的檔案 **file.txt**,如下所示:

$ echo 'Hello, World!' > file.txt

現在,我們可以使用以下命令為此檔案建立一個軟連結:

$ ln -s file.txt soft-link
$ ls -l
total 4
-rw-r--r-- 1 root root 14 May  1 20:11 file.txt
lrwxrwxrwx 1 root root  8 May  1 20:11 soft-link -> file.txt

請注意許可權字串 **lrwxrwxrwx** 的第一個字元 **l**,這意味著該檔案是一個符號連結。現在您可以使用 **soft-link** 訪問檔案 **file.txt** 的內容並更新其內容,這將反映在原始 file.txt 中。

如何刪除符號連結

您可以使用 unlink 或 rm 命令刪除現有的符號連結。只要您刪除的是符號連結,它就不會影響原始檔案,但如果您刪除了原始檔案,則它將在該檔案上建立損壞的符號連結。

以下命令將刪除我們在上一節中建立的 soft-link:

$ unlink soft-link

$

查詢損壞的符號連結

您可以使用以下 find 命令查詢所有損壞的符號連結:

$ find /path/to/directory -xtype l

這將列出 /path/to/directory 目錄中的所有損壞的符號連結。您可以使用 **-delete** 選項刪除找到的損壞連結。

$ find /path/to/directory -xtype l -delete

硬連結

硬連結也是檔案的快捷方式,但不能為不同檔案系統上的資料夾或檔案建立硬連結。

Linux - Hard Links

硬連結是原始檔案的映象副本。刪除原始檔案不會影響任何內容,因為硬連結檔案將充當原始檔案的映象副本。

如何建立硬連結

以下是為現有檔案建立硬連結的語法:

$ ln  filepath hardlink

此處 **filepath** 可以是原始檔案的完整檔案路徑,**hardlink** 將是硬連結的名稱,它將指向該檔案。讓我們使用以下命令為 **file.txt** 檔案建立一個硬連結:

$ ln file.txt hard-link
$ ls -li
total 8
72744984 -rw-r--r-- 2 root root 14 May  1 20:11 file.txt
72744984 -rw-r--r-- 2 root root 14 May  1 20:11 hard-link

請注意 inode 號碼 **72744984**,它對這兩個檔案都相同。許可權字串後的數字是 2,這意味著存在兩個相同檔案的副本。如果您將為此檔案 file.txt 建立另一個硬連結,則此數字將變為 3。

現在您可以使用 **hard-link** 訪問檔案 **file.txt** 的內容並更新其內容,這將反映在 file.txt 中。

如何刪除硬連結

您可以使用 **unlink** 或 **rm** 命令刪除現有的硬連結。刪除硬連結或原始連結不會影響另一個檔案,因為硬連結建立了原始檔案的映象副本。

以下命令將刪除我們在上一節中建立的 soft-link:

$ unlink hard-link
$ ls -li
total 4
72744984 -rw-r--r-- 1 root root 14 May  1 20:11 file.txt

符號連結與硬連結

Linux 檔案系統連結的兩種型別是硬連結和軟連結。這兩種連結之間的區別很大,我們已在此處列出。

  • 符號連結可以建立在目錄和檔案上,而硬連結只能建立在檔案上,不能建立在目錄上。

  • 即使符號連結位於不同的檔案系統上,也可以為檔案或目錄建立符號連結,而硬連結只能在同一檔案系統上建立。

  • 符號連結不會從原始檔案繼承原始許可權。這意味著對原始檔案進行的任何許可權更改都不會反映在符號連結中。硬連結在一起的檔案共享相同的 inode 號碼。當對一個檔案進行更改時,另一個檔案會反映這些更改以及許可權、連結計數、所有權和時間戳。儘管在這兩種情況下,所有連結檔案的內容都完全相同。

  • 符號連結的大小非常小,因為它們只是指向原始內容的指標,而不是原始檔案的映象,其大小隻是構成檔案或目錄名稱所需的位元組數。而硬連結則會佔用更多空間,因為它們會建立原始檔案的映象副本。

廣告