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