符號鏈結檔案 Linux硬鏈結檔案的建立

2021-10-14 16:11:09 字數 2063 閱讀 2785

雖然符號鏈結與硬鏈結兩者的名字裡面都有鏈結,但是兩者還是有很大的不同的,兩者的原理與特徵都不相同

首先我們看一下linux的檔案是如何儲存的。

在linux中當劃分磁碟分割槽並格式化的時候,整個分割槽會被劃分為2個部分即:inode區和data block區

乙個檔案會被分成兩個部分,分開存放,一部分是檔案的唯一標識inode-number以及屬性資訊放在inode區中的乙個inode中,inode-number和inode是一一對應的。另一部分是檔案的實際資料,放在data block區。在linux中我們需要通過檔案的inode來找到存放檔案資料的data block

在乙個硬碟分割槽中不可能有2個檔案共用乙個inode,自然也不可能有兩個檔案的inode-number是一樣的。

如果我們將乙個硬碟分割槽中的所有檔案比作一本書的話,那麼inode區就是書的目錄。我們可以通過目錄找到具體的內容,就像查字典一樣。

我們可以通過 ls –il 也就是加乙個-i選項來檢視inode資訊

ls –il 通過下圖可以看到下面的數字就是inode-number

linux中的目錄到底是乙個怎樣的檔案,簡單來說linux中的目錄是一張表

檔名 inode-number 每個表項都代表了乙個檔案,目錄中有多少檔案,就會有多少表項,每個表項中就包括了兩樣資料,乙個是檔名,二是該檔案的inode-number

linux訪問檔案的過程就是通過檔名找到inode-number然後再找到inode,然後再通過inode找到檔案實際資料。

弄清這2個概念,我們再看硬鏈結,硬鏈結就是在目錄這張表中,讓乙個inode-number對應了多個檔名,檔案inode和資料data block還是只有乙份,沒有變。只不過檔案多了乙個名字,這個名字就被稱為硬鏈結。

建立硬鏈結同樣使用命令ln來建立,引數也一樣,只不過不用加-s選項了。

ln [鏈結所指向的檔名] [硬鏈結名]

前乙個引數是鏈結所指向的檔名,後乙個引數指的要建立的硬鏈結名

ln file2.sh file2_hlink 為檔案file2.sh建立乙個硬鏈結名為file2_hlink,下圖可以看出這2個檔案的屬性一模一樣,inode-number也是一樣的,大小也是一樣的,只不過硬鏈結的數字發生了變化,由1變成了2

file2.sh file2_hlink是同乙個檔案,只不過個檔案有多個名字罷了。

如果我們把硬鏈結的原始檔刪除掉,會不會像符號鏈結那樣斷鏈呢

從上圖可以看出來,硬鏈結file2_hlink並沒有像符號鏈結一樣變成紅色,也就是斷鏈。只不過檔案屬性中的硬鏈結數目由原來的2變成了1,仍然能夠照常開啟,檔案屬性和檔案內容並無異常。

我們為file2.sh建立乙個硬鏈結file2_hlink就相當於這個檔案在檔案系統中有了2個檔名,這2個檔名都指向同乙個檔案內容。刪除了乙個檔案,只是將某個檔名從檔案系統中刪除了,我們仍然可以通過另外乙個檔名來找到這個檔案內容,只要這個檔案還存在乙個檔名,這個檔案就一切正常。仍然可以訪問,除非2個檔名都刪除了,我們才無法通過檔名找到檔案inode進而找到檔案data block,檔案這才算被真正的刪除掉。

二是不能跨越分割槽建立硬鏈結,因為不同的硬碟分割槽檔案的inode-number不再是唯一的了

符號鏈結檔案和硬鏈結檔案

實驗6 11.針對符號連線檔案和硬連線檔案。測試以下函式,分析其執行過程並給出結論。分析 b檔案為a檔案的軟連線檔案,從實驗測試可以看出用stat 函式測試b檔案顯示的許可權為檔案a的許可權,用lstat 函式測試b檔案顯示的許可權為自身許可權。結論 如果stat函式的第乙個引數為符號連線檔案,其讀...

Linux基礎(四)硬鏈結,符號鏈結

符號鏈結 可以建立對於檔案和目錄的鏈結。符號鏈結可以跨檔案系統,即可以跨磁碟分割槽。符號鏈結的檔案型別位是l,鏈結檔案具有新的i節點。硬鏈結 不可以跨檔案系統。它只能建立對檔案的鏈結,硬鏈結的檔案型別位是 且硬鏈結檔案的i節點同被鏈結檔案的i節點相同。from 在linux的檔案系統中,儲存在磁碟分...

硬鏈結與符號鏈結

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