Linux的inode 軟鏈結 硬鏈結

2022-05-22 21:57:11 字數 2585 閱讀 7822

ln -s myfile.txt mylink                //建立符號鏈結,即軟鏈結

ln     myfile.txt hardlink        //建立硬鏈結 

linux的檔案系統(硬碟)分為2部分:inode table 與 data area。inode table上有許多的inode, 每個inode分別記錄乙個檔案的屬性與這個檔案分布在哪些datablock上(也就是我們說的指標)。inode有兩個功能:記錄檔案屬性和指標。data area由很多datablock構成,data area記錄檔案的真實內容。 

hard link 只是在某個目錄下新增乙個該檔案的關連資料而已!

1.舉個例子來說,我的 /home/vbird/crontab 為乙個 hard link 的檔案,他鏈結到 /etc/crontab 這個檔案,也就是說,其實 /home/vbird/crontab 與 /etc/crontab是同乙個檔案,只是有兩個目錄( /etc 與 /home/vbird )記錄了 crontab 這個檔案的關連資料罷了!也就是說,我由 /etc 的 block 所記錄的關連資料可知道 crontab 的 inode 放置在 a 處,而由 /home/vbird 這個目錄下的關連資料,contab 同樣也指到 a處的 inode! 所以,crontab 這個檔案的 inode 與 block 都沒有改變,有的只是有兩個目錄記錄了關連資料.

2.使用 hard link 設定鏈結檔案時,磁碟的空間與 inode 的數目都不會改變!由上面的說明來看,我們可以知道, hard link 只是在某個目錄下的 block 多寫入乙個關連資料,所以當然不會用掉 inode 與磁碟空間。

3.當我們修改其中乙個檔案的內容時,互為硬鏈結的檔案的內容也會跟著變化。如果我們刪除互為硬鏈結關係的某個檔案時,其它的檔案並不受影響.

4.由於 hard link 是在同乙個 partition 上面進行資料關連的建立,所以 hard link 是有限制的:

a. 不能跨 filesystem.

b. 不能 link 目錄。

之後執行 ls -l: -rw-r--r-- 3 younes younes   40 2009-12-03 16:36 hard_me.txt ,其中橙色底紋的數字代表指向該檔案硬鏈結的數目。

1. 軟鏈結也叫符號鏈結,他和硬鏈結有所不同,軟鏈結檔案只是其原始檔的乙個標記。當我們刪除了原始檔後,鏈結檔案不能獨立存在,雖然仍保留檔名,但我們卻不能檢視軟鏈結檔案的內容了.

2. symbolic link 與 windows 的快捷方式可以給他划上等號,由 symbolic link 所建立的檔案為乙個獨立的新的檔案,所以會占用調inode與block。

(1)軟連線可以 跨檔案系統 ,硬連線不可以 。實踐的方法就是用共享檔案把windows下的 aa.txt文字文件連線到linux下/root目錄 下 bb,cc . ln -s aa.txt /root/bb 連線成功 。ln             aa.txt /root/bb 失敗 。(2)關於 i節點的問題 。硬連線不管有多少個,都指向的是同乙個i節點,會把 結點連線數增加,只要結點的連線數不是 0,檔案就一直存在 ,不管你刪除的是原始檔還是連線的檔案。只         要有乙個存在,檔案就 存在(其實也不分什麼 原始檔連線檔案的 ,因為他們指向都是同乙個 i節點)。 當你修改原始檔或者連線檔案任何乙個的時候,其他的 檔案都會做同步的修           改 。軟鏈結不直接使用i節點號作為檔案指標, 而是使用檔案路徑名作為指標。所以刪除連線檔案對原始檔無影響,但是刪除原始檔,連線檔案就會找不到要指向的檔案。軟鏈結有自           己的inode, 並在磁碟上有一小片空間存放路徑名。

(3)軟連線可以對乙個不存在的檔名進行連線 。

(4)軟連線可以對目錄進行連線。

備註:i節點 :它是unix內部用於描述檔案特性的資料結構。我們通常稱i節點為檔案索引結點(資訊結點)。i節點含有關於檔案的大部分的重要信 息,包括檔案資料塊在磁碟上的位址。每一         個i節點有它自己的標誌號,我們稱為檔案順序號。i節點包含的資訊 :1.檔案型別  2.檔案屬主關係  3.檔案的訪問許可權  4.檔案的時間截 。

硬連線指通過索引節點來進行的連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index )。在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要的檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。

軟鏈結是另乙個檔案,作用可以理解為乙個指標,作用在這個檔案上的操作除了刪除都直接轉向實際指向檔案,由於是乙個真實的檔案所以占用磁碟空間 。硬鏈結可以認為不是乙個檔案,它只是實際檔案的乙個別名,它的作用是防止真實檔案被誤操作,給乙個檔案建立硬鏈結後,他們互為別名,刪除其中任乙個,只會刪除該別名,實際檔案並不會被刪除。由於只是別名沒有任何其他資訊,所以並不占用原始檔案大小的磁碟空間。

  

inode 及軟鏈結 硬鏈結

inode 用來儲存檔案的元資訊的索引節點。包括檔案的建立者 建立日期 檔案的大小等。linux下一切皆檔案,每個檔案都有其對應的inode。inode內容 檔案的位元組數 文i件擁有者的userid 檔案的groupid 檔案讀 寫 執行許可權 mtime 檔案內容上次變動的時間 atime 檔案...

linux硬鏈結 軟鏈結

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

linux硬鏈結軟鏈結

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