硬鏈結和符號鏈結詳解

2021-08-22 14:39:04 字數 2309 閱讀 3402

檔案屬性軟硬連線:

鏈結有兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。建立硬鏈結時,鏈結檔案和被鏈結檔案必須位於同乙個檔案系統中,並且不能建立指向目錄的硬鏈結。而對符號鏈結,則不存在這個問題。預設情況下,ln產生硬鏈結。

在硬鏈結的情況下,引數中的「目標」被鏈結至[鏈結名]。如果[鏈結名]是乙個目錄名,系統將在該目錄之下建立乙個或多個與「目標」同名的鏈結檔案,鏈結檔案和被鏈結檔案的內容完全相同。如果[鏈結名]為乙個檔案,使用者將被告知該檔案已存在且不進行鏈結。如果指定了多個「目標」引數,那麼最後乙個引數必須為目錄。

如果給ln命令加上- s選項,則建立符號鏈結。如果[鏈結名]已經存在但不是目錄,將不做鏈結。[鏈結名]可以是任何乙個檔名(可包含路徑),也可以是乙個目錄,並且允許它與「目標」不在同乙個檔案系統中。如果[鏈結名]是乙個已經存在的目錄,系統將在該目錄下建立乙個或多個與「目標」同名的檔案,此新建的檔案實際上是指向原「目標」的符號鏈結檔案。

軟連線:ln -s 原始檔 目標檔案(目標檔案不能已經存在)

在linux檔案系統中,多個檔名指向同乙個索引節點(inode)。這種情況檔案就稱為硬鏈結。硬鏈結檔案就相當於檔案的另外的乙個入口。

例:[root@centos ~]# ls -il ett.txt

39 -rw-r--r--. 1 root root 292 5月  10 19:58 ett.txt

[root@centos ~]# ln ett.txt a

[root@centos ~]# ls -hil ett.txt a

39 -rw-r--r--. 2 root root 292 5月  10 19:58 a

39 -rw-r--r--. 2 root root 292 5月  10 19:58 ett.txt

具有相同inode節點號的多個檔案是互為硬鏈結檔案

刪除硬鏈結檔案或者刪除原始檔任意之一,檔案實體並未被刪除

只有刪除了原始檔及所有對應的硬鏈結檔案,檔案實體才會被刪除

當所有的硬鏈結檔案及原始檔被刪除後,再存放新的資料會占用這個檔案的空間,或者磁碟fsck檢查的時候,刪除的資料也會被系統**

硬鏈結檔案就是檔案的另乙個入口

可以通過給檔案設定硬鏈結檔案,來防止重要檔案被誤刪

通過執行 ln 原始檔 硬鏈結檔案 即可建立硬鏈結檔案

硬鏈結檔案是普通檔案,所以可以用rm命令刪除

我們在使用硬鏈結的同時也需要對硬鏈結的限制有所了解; 

1. 不能跨檔案系統 

2. 不能鏈結到目錄

軟連線又叫做符號鏈結,它幾乎可以等價於windows下的快捷方式;

[root@centos ~]# ls -li install.log b

121 lrwxrwxrwx  1 root root    11 5月  18 15:14 b -> install.log

13 -rw-r--r--. 1 root root 21712 5月   8 00:06 install.log

軟連線的建立:

軟連線:ln -s 原始檔 目標檔案(目標檔案不能已經存在)

軟連線知識:

軟連線類似window的快捷方式(可以通過readiink檢視其指向)

軟連線類似乙個文字檔案,裡面存放的是原始檔的路徑,指向原始檔實體

刪除原始檔,軟連線檔案依然存在,但是無法訪問指向的原始檔路徑內容了

失效的時候一般是白字紅底閃爍提示

執行命令「ln -s 原始檔 軟連線檔案」,即可完成建立軟連線(目標不能存在)

軟連線和原始檔是不同型別的檔案,也是不同的檔案,inode號也不相同

軟連線檔案的檔案型別為(l),可以用rm命令刪除

有關檔案的整體總結:

1.刪除軟連線,對原始檔和硬鏈結檔案都沒有影響

2.刪除硬鏈結,對原始檔和軟連線檔案都沒有影響

3.刪除原始檔,對硬鏈結沒有印象,但是會導致軟連線檔案失效,白底紅字閃爍

4.同時刪除原始檔和硬鏈結檔案,整個檔案才會真正的被刪除

5.原始檔和硬鏈結檔案具有相同的索引節點號,可以認為是同乙個檔案或乙個檔案多個入口

6.原始檔和軟連線檔案的索引節點號不相同,是不同的檔案,軟連線檔案相當於原始檔的快捷方式,含有原始檔的位置指向

有關目錄的總結:

對於目錄,不可以建立硬鏈結,但可以建立軟連線

目錄的硬鏈結不能跨越檔案系統

每個目錄下面都有乙個硬鏈結.號,和對應上級目錄的硬鏈結..

在父目錄裡面建立乙個子目錄,父目錄的鏈結數會增加1(子目錄裡都來指向父目錄)

Linus 符號鏈結和硬鏈結

新建立的硬鏈結與檔案本身其實沒有什麼區別,僅僅是為檔案建立了另外乙個目錄條目,可以理解成乙個檔案具有兩個名稱。當使用者刪除其中乙個名稱,另外乙個名稱依然存在,使用者仍然可以通過該名稱訪問檔案,直到該檔案的所有名稱都被刪除,檔案才會被系統刪除。硬鏈結 只能引用同一檔案系統中的檔案。它引用的是檔案在檔案...

硬鏈結與符號鏈結

索引節點 inode 要 了解鏈結,我們首先得了解乙個概念,叫索引節點 inode 在linux系統中,核心為每乙個新建立的檔案分配乙個inode 索引結點 每個檔案 都有乙個惟一的inode號,我們可以將inode簡單理解成乙個指標,它永遠指向本檔案的具體儲存位置。檔案屬性儲存在索引結點裡,在訪問...

硬鏈結與符號鏈結

乙個inode節點可以存在任意數目的硬鏈結。在刪除硬鏈結時,該inode節點上的資料上的資料將不會受到影響。在linux系統中可以使用ln命令來建立硬鏈結。首先用touch命令建立名為link.test的檔案。然後,輸入 ln link.test link 命令,這時就建立了指向link.test的...