從檔案系統本質看硬鏈結和軟連線的區別

2021-06-18 09:36:16 字數 3133 閱讀 1850

該檔案的注釋的參考頁碼書籍:linux c程式設計一站式學習

1、 首先把乙個檔案作為分割槽格式化。然後在這個檔案系統中分析硬鏈結和軟連線的區別

$ dd  if=/dev/zero of=fscount=256 bs=4k

該語句詳細解釋在p510

2、 用常規檔案製作成的檔案系統也可以像磁碟分割槽一樣mount 到某個目錄。

$sudo mount –o loop  fs /mount

該語句詳細解釋在p511

3、 切換到掛載的目錄,在該目錄下新增刪除檔案,這些操作會自動儲存到fs檔案中去

$cd /mnt

4、 建立第乙個檔案$sudo vim hello.c

5、 建立硬鏈結$ ln hello.c hi.c

6、 建立軟鏈結$ ln –s hello.c h.c

7、 檢視檔案的資訊$ ls –l (**件資訊)

分析圖:軟連線建立的hi.c指向hello.c ,位元組數是7.這7個位元組就是」hello.c」7個字元。

硬鏈結建立的h.c 和hello.c的屬性一樣。

關於硬鏈結和軟鏈結的分析在p509頁

8、 將這個分割槽從/mnt目錄下umout 下來,確保所有的改動都儲存在檔案中了。

$sudo  umount  /mnt

9、 切換到/home目錄下,用二進位制檢視工具檢視這個檔案系統的所有位元組。

$sudo  od –tx1 –ax  fs

該語句的詳細介紹p512

10、同時與dunpe2fs 工具的輸出分割槽的超級塊和塊組描述符表資訊相比較。

$ dumpe2fs fs

該語句詳細介紹p510

10、檢視hello.c 的inode資訊

$ debugfs  fs

在debugfa的提示符先輸入stat hello.c

,顯示hello.c 的inode 的資訊。

輸入stat hi.c ,顯示hi.c 的inode資訊(硬鏈結)。

hi.c 和hello.c 的inode 資訊相同如下:

該語句詳細介紹p514

h.c 的inode 的資訊(軟連線)

建立軟鏈結時,新建立了乙個inode。

10、找到inode 的的位置

計算公式:(inode-1)*80+2000

hello.c 和hi.c 的inode 位置是2600,檢視下圖可知

根據node 的內容順序

資料塊位置由上圖可知2ex0x400=b800,在od 輸出中找到00b800位址

理解:通過inode指出的資料塊的位址, 找到相應的資料塊,讀取內容。

h.c 的inode 位置是2580 ,看圖可知 h.c 的資料塊內容為hello.c

理解:軟鏈結檔案的inode 指向了hello.c ,需要通過hello.c 的inode找到資料塊,

讀取內容。

讀inode 的詳細內容p515

12、hello.c 和硬鏈結hi.c 檔案的資料塊位置由上圖可知2ex0x400=b800,在od 輸出中找到00b800位址。

該位址中的內容為建立hello.c 檔案時寫入的內容"#include"對應的ascci碼。

資料塊的讀取詳細內容p515

檔案系統 軟連線和硬鏈結

先,來看一下檔案的各個屬性。圖1 ls li檢視檔案屬性 輸入命令是ls li 第一行 inode 下面會將述inode 第二行 檔案的種類和許可權 第四行 屬組 第五行 所歸屬的組 第六行 檔案的大小 第七行 檔案最後修改的時間 第八行 檔案或者目錄的名稱 其次,讓我們來看一下inode。inod...

檔案系統 硬鏈結 軟鏈結

我們使用ls l的時候看到的除了看到檔名,還看到了檔案元資料 linux7種檔案型別 普通檔案 目錄檔案 管道檔案 軟鏈結檔案 塊裝置檔案 字元裝置檔案socket檔案 ls l讀取儲存在磁碟上的檔案資訊,然後顯示出來 求檔案的大小 8int main 9 其實這個檔案元資訊除了通過ls方式來讀取,...

linux檔案系統 軟鏈結和硬鏈結

硬鏈結ln src dest ubpara link ls il 總用量 8 660108 rw rw r 1 ubpara ubpara 9 5月 14 19 41 a 660109 drwxrwxr x 2 ubpara ubpara 4096 5月 14 19 42 test ubpara l...