Linux下的硬鏈結和軟鏈結

2021-07-31 01:56:10 字數 2356 閱讀 9347

乙個檔案有檔名資料,而資料在linux上又被分成了兩個部分,分別是使用者資料元資料*

使用者資料:即檔案資料塊(block),是記錄檔案真實內容的地方。

元資料(metadata):記錄檔案的附加屬性(檔案大小,建立時間,所有者資訊等等)。

在檔案中的元資料中,有一項被稱為inode號,在linux系統下,inode號唯一的表示乙個檔案,那麼有人會問,那麼檔名呢?

其實,檔名代表的只是檔案的別名;在linux系統下,作業系統也是通過inode號來找到正確的檔案資料塊的。

為了解決檔案的共享使用問題,另外還考慮了隱藏檔案路徑,增加許可權安全以及節省儲存空間的好處,在linux系統下引入了軟鏈結和硬鏈結這兩個概念。

若乙個inode號對應多個檔案,則這些檔案為硬鏈結,即硬鏈結就是同乙個檔案使用了多個別名,這個是不是和c++的引用計數很類似~

1.檔案有相同的inode和block,並且檔案資訊相同。

上圖我們在建立了硬鏈結後,使用stat命令檢視硬鏈結檔案和原始檔的資訊。

2.檔案資訊要改一起改。

下面我們來進行驗證,我們在原始檔中追加一行,然後檢視硬鏈結檔案。

[root@leap_ awk_test]# echo "hello

leap" >> file

[root@leap_ awk_test]# cat

file_h

producta

:20productb

:50productc

:20productd

:30producte

:99productf

:120

hello,world

hello,world

hello

leap

其實這裡不光是內容發生了改變,相應的檔案狀態也發生了改變,並且同乙個inode對應的硬鏈結檔案資訊都相同。

3.刪除乙個硬鏈結檔案並不影響其他具有相同inode號的檔案。

這個很好理解,因為linux系統下為每個檔案的硬鏈結維護了乙個引用計數,當我們刪除乙個檔案時,如果這個檔案的引用計數是大於1的,那麼我們僅僅是將鏈結清除掉,並不影響原始檔。

若檔案使用者資料塊存放的內容是另一檔案的路徑名的指向,則該檔案就是軟鏈結,軟鏈結就是乙個普通檔案,只是資料塊內容有點特殊,它有著自己的inode號以及使用者資料塊。

軟鏈結與原始檔的關係如下圖:

1.軟鏈結有著自己的檔案屬性和許可權;

2.可對不存在的檔案或者目錄建立軟連線;

3.軟鏈結可交叉檔案系統;

4.建立軟連線時,引用計數不會增加;

5.刪除軟鏈結不影響軟鏈結指向的檔案;

6.刪除軟鏈結指向的原始檔,則相關軟鏈結被稱為死連線,若執行路徑被重新建立,死連線可以恢復為正常的軟鏈結。

7.修改軟鏈結的檔案狀態會影響軟鏈結所指向的檔案的狀態。

1.首先我們驗證軟鏈結有著自己的檔案許可權和屬性;

[root@leap_ awk_test]# ln -s file file_s

[root@leap_ awk_test]# ls -al file file_s

-rw-r--r--. 2 root root 108 apr 23

06:44

file

lrwxrwxrwx. 1 root root 4 apr 23

06:52 file_s -> file

2.下面我們對乙個不存在的檔案進行軟鏈結的建立

只不過此時的軟鏈結是乙個死鏈結,它不指向任何檔案,不信你可以cat它一下。

Linux下的軟鏈結和硬鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...

Linux下的軟鏈結和硬鏈結

2 軟鏈結 soft link 3 區別 ln 原檔名 要建立的硬鏈結的檔名 a是b的硬鏈結 a和b都是檔名 則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對...

Linux 硬鏈結和軟鏈結

硬鏈結是通過鏈結原始檔的索引節點來進行有效鏈結。linux系統中的每個檔案都有乙個自己的索引節點,如同資料庫中的每條記錄都有自己的唯一索引一樣。自我感覺硬鏈結就像是windows下乙個檔案的拷貝,唯一不同的地方是多個該檔案的拷貝 硬鏈結 通過原始檔的索引節點來共享和更新自己的內容,一旦該節點上的任一...