當前位置:
首頁 >
linux 软硬连接区别---关于inode索引节点
發布時間:2025/3/20
56
豆豆
生活随笔
收集整理的這篇文章主要介紹了
linux 软硬连接区别---关于inode索引节点
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
linux系統為每1個文件都分配有i索引節點(inode),系統根據呢d節點從磁盤找出數據。? 一般來講,每1個文件名(包含全路徑)實際上都鏈接住1個i索引節點。
inode實際上系乜咧? 其實可以算系1個指向磁盤具體位置(柱面,扇區之類)的指針, 系統分析某個文件的inode,得出磁盤柱面,扇區等數據, 就會去磁盤具體位置讀出數據。
例如我在我的機器上的 ~/tmp/有1個文件夾fo1, 里面有3個文件a.txt, b.txt ,c.txt
他們3個文件都Link 住1個節點。
使用命令 ls -i 選項可以查看節點和節點(硬)連接數
我畫了一幅圖方便理解(美術盲用gimp和shutter畫的 系咁咦睇拉~)
好啦,跟住介紹下乜叫硬連接,? 好多地方都講硬連接就是1個文件有兩個文件名,怎么理解呢,的確不好理解。
我認為應該咁認為:? 硬連接是2個文件名鏈接住同1個inode節點。
硬連接的命令寫法:? ln? 文件名1? 文件名2????????? #(文件名2不能是已經存在的)
這樣就為文件1 建立1個硬連接文件2
例如我在/home/gateman/fo2 文件夾中做1個硬連接d.txt, 鏈接住 /home/gateman/fo1/c.txt??
由上面第一幅圖得知c.txt 的inode值是 5114518
下面就做硬連接 如下圖
注意:如果~/fo2/ 本來已經存在1個叫d.txt 的文件的話, 硬連接會失敗,報錯。
因為c.txt 和 d.txt inode節點的值一樣,他們都指向同1個磁盤位置,所以他們的內容是永遠同步的,如果A用戶修改了c.txt
那么B用戶也可以從d.txt 見到改動。
既然兩個文件要指向同個磁盤物理位置, 所以硬連接不能跨文件系統(分區)使用, 也就是說 不能在B分區 做1個 指向A分區文件的硬連接。
如下圖, 因為我系統中/home? 和/tmp? 掛載在不同的磁盤分區,所以不能在/tmp中做1個/home 文件的硬連接的,會報錯,即使他們的分區類型都是ext4.
又畫了一副圖方便理解。可以見到c.txt 和 d.txt都指想同1個節點
這種多個文件名指向同1個節點的做法就叫做硬連接。
如果刪除c.txt,? d.txt會怎樣呢, 好明顯答案就是d.txt仍然存在而且內容不變,? d.txt的節點只不過少了1個c.txt的連接。
如果節點最后1個連接被刪除, 這個節點才會消失(改磁盤位置的內容不一定被刪除, 所以磁盤才有可能會恢復刪除數據,但是該磁盤位置被寫人新內容的話就無法恢復了)
下面講下什么叫軟連接
軟連接的命令寫法是 ln -s 文件名1 文件名2?? #(文件名2不能是已經存在的)
軟連接就相當于windows的快捷方式。
跟硬連接有什么區別呢
下面我做1個c.txt 的軟連接? (~/tmp/fo2/e.txt)
?
?
? 可以看出軟連接 e.txt 連接 的是 c.txt 本身, 而不是c.txt 的節點, 所以當c.txt 被刪除, e.txt就相當1個空連接,廢連接。
又畫了一圖
這樣能理解了把?
總結一下:
硬連接和軟連接的相同點:?? 改動1個文件都會同步到他們的連接。
區別:
硬連接指向節點, 軟連接指向文件。
硬連接中各個連接地位相同,軟連接有1個源文件。
硬連接其中1個被刪除,其他連接不會被影響,??? 軟連接的連接被刪除,不會影響源文件,但是源文件被刪除,連接就變成空連。
硬連接不能夸分區夸文件系統使用, 軟連接可以。
硬連接只能連接文件,? 軟連接不只可以連接文件,還可以連接目錄(相當有用)。
?
?
inode實際上系乜咧? 其實可以算系1個指向磁盤具體位置(柱面,扇區之類)的指針, 系統分析某個文件的inode,得出磁盤柱面,扇區等數據, 就會去磁盤具體位置讀出數據。
例如我在我的機器上的 ~/tmp/有1個文件夾fo1, 里面有3個文件a.txt, b.txt ,c.txt
他們3個文件都Link 住1個節點。
使用命令 ls -i 選項可以查看節點和節點(硬)連接數
ls -il
?我畫了一幅圖方便理解(美術盲用gimp和shutter畫的 系咁咦睇拉~)
好啦,跟住介紹下乜叫硬連接,? 好多地方都講硬連接就是1個文件有兩個文件名,怎么理解呢,的確不好理解。
我認為應該咁認為:? 硬連接是2個文件名鏈接住同1個inode節點。
硬連接的命令寫法:? ln? 文件名1? 文件名2????????? #(文件名2不能是已經存在的)
這樣就為文件1 建立1個硬連接文件2
例如我在/home/gateman/fo2 文件夾中做1個硬連接d.txt, 鏈接住 /home/gateman/fo1/c.txt??
由上面第一幅圖得知c.txt 的inode值是 5114518
下面就做硬連接 如下圖
注意:如果~/fo2/ 本來已經存在1個叫d.txt 的文件的話, 硬連接會失敗,報錯。
因為c.txt 和 d.txt inode節點的值一樣,他們都指向同1個磁盤位置,所以他們的內容是永遠同步的,如果A用戶修改了c.txt
那么B用戶也可以從d.txt 見到改動。
既然兩個文件要指向同個磁盤物理位置, 所以硬連接不能跨文件系統(分區)使用, 也就是說 不能在B分區 做1個 指向A分區文件的硬連接。
如下圖, 因為我系統中/home? 和/tmp? 掛載在不同的磁盤分區,所以不能在/tmp中做1個/home 文件的硬連接的,會報錯,即使他們的分區類型都是ext4.
又畫了一副圖方便理解。可以見到c.txt 和 d.txt都指想同1個節點
這種多個文件名指向同1個節點的做法就叫做硬連接。
如果刪除c.txt,? d.txt會怎樣呢, 好明顯答案就是d.txt仍然存在而且內容不變,? d.txt的節點只不過少了1個c.txt的連接。
如果節點最后1個連接被刪除, 這個節點才會消失(改磁盤位置的內容不一定被刪除, 所以磁盤才有可能會恢復刪除數據,但是該磁盤位置被寫人新內容的話就無法恢復了)
下面講下什么叫軟連接
軟連接的命令寫法是 ln -s 文件名1 文件名2?? #(文件名2不能是已經存在的)
軟連接就相當于windows的快捷方式。
跟硬連接有什么區別呢
下面我做1個c.txt 的軟連接? (~/tmp/fo2/e.txt)
?
?
? 可以看出軟連接 e.txt 連接 的是 c.txt 本身, 而不是c.txt 的節點, 所以當c.txt 被刪除, e.txt就相當1個空連接,廢連接。
又畫了一圖
這樣能理解了把?
總結一下:
硬連接和軟連接的相同點:?? 改動1個文件都會同步到他們的連接。
區別:
硬連接指向節點, 軟連接指向文件。
硬連接中各個連接地位相同,軟連接有1個源文件。
硬連接其中1個被刪除,其他連接不會被影響,??? 軟連接的連接被刪除,不會影響源文件,但是源文件被刪除,連接就變成空連。
硬連接不能夸分區夸文件系統使用, 軟連接可以。
硬連接只能連接文件,? 軟連接不只可以連接文件,還可以連接目錄(相當有用)。
?
?
總結
以上是生活随笔為你收集整理的linux 软硬连接区别---关于inode索引节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gentoo 安装日记 07 (stag
- 下一篇: 关于linux cp命令的一d参数