欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

區(qū)分Linux硬鏈接與軟鏈接

 更新時(shí)間:2020年08月24日 11:43:31   作者:Dabelv  
這篇文章主要介紹了區(qū)分Linux硬鏈接與軟鏈接,幫助大家更好的理解和學(xué)習(xí)Linux,感興趣的朋友可以了解下

在Linux中,連接文件有兩種,一種類似于Windows的快捷方式,可以讓你快速地鏈接到目標(biāo)文件(或目錄),這種稱為軟鏈接(soft link),也叫作符號(hào)鏈接(symbolic link);另一種則是通過文件系統(tǒng)的 inode 連接來產(chǎn)生新文件名,而不是產(chǎn)生新文件。這種稱為硬鏈接(hard link),也叫作實(shí)體鏈接。 軟鏈接與硬鏈接是兩種完全不一樣的東西。

1.硬鏈接(hard link)

1.1簡(jiǎn)介

一般情況下,文件名和inode號(hào)碼是一一對(duì)應(yīng)關(guān)系,每個(gè)inode號(hào)碼對(duì)應(yīng)一個(gè)文件名。但是,Unix/Linux系統(tǒng),允許多個(gè)文件名指向同一個(gè)inode號(hào)碼。這意味著,可以用不同的文件名訪問同樣的內(nèi)容;對(duì)文件內(nèi)容進(jìn)行修改,會(huì)影響到所有文件名;但是,刪除一個(gè)文件名,不影響另一個(gè)文件名的訪問。這種情況就被稱為"硬鏈接"(hard link)。

ln命令可以創(chuàng)建硬鏈接:

ln <源文件> <硬鏈接>

運(yùn)行上面這條命令以后,源文件與目標(biāo)文件的inode號(hào)碼相同,都指向同一個(gè)inode。inode信息中有一項(xiàng)叫做"鏈接數(shù)",記錄指向該inode的文件名總數(shù),這時(shí)就會(huì)增加1。反過來,刪除一個(gè)文件名,就會(huì)使得inode節(jié)點(diǎn)中的"鏈接數(shù)"減1。當(dāng)這個(gè)值減到0,表明沒有文件名指向這個(gè)inode,系統(tǒng)就會(huì)回收這個(gè)inode號(hào)碼,以及其所對(duì)應(yīng)block區(qū)域。

這里順便說一下目錄文件的"鏈接數(shù)"。創(chuàng)建目錄時(shí),默認(rèn)會(huì)生成兩個(gè)目錄項(xiàng):".“和”…"。前者的inode號(hào)碼就是當(dāng)前目錄的inode號(hào)碼,等同于當(dāng)前目錄的"硬鏈接";后者的inode號(hào)碼就是當(dāng)前目錄的父目錄的inode號(hào)碼,等同于父目錄的"硬鏈接"。所以,任何一個(gè)目錄的"硬鏈接"總數(shù),總是等于2加上它的子目錄總數(shù)(含隱藏目錄),這里的2是本身目錄名對(duì)其的“硬鏈接”和當(dāng)前目錄下的“.”對(duì)其的硬鏈接“。

1.2硬鏈接與inode的關(guān)系

硬鏈接本質(zhì)上是文件的別名,與源文件映射到相同的inode。下面分別在/etc和/root目錄下建立源文件lvlv.txt和硬鏈接lvlv_hd.txt,并查看文件屬性。

#創(chuàng)建硬鏈接
ln /etc/lvlv.txt /root/lvlv_hd.txt 

#列出文件屬性
ll -i /etc/lvlv.txt
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv.txt
ll -i /root/lvlv_hd.txt
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv_hd.txt

從上面可以看出硬鏈接/etc/lvlv_hd.txt的inode與源文件lvlv.txt相同,其它信息完全相同。存儲(chǔ)示意圖如下:

圖示的內(nèi)容表示目錄/root下的硬鏈接lvlv_hd.txt在與/etc下文件lvlv.txt通過相同的inode指向同一個(gè)文件內(nèi)容。目錄的數(shù)據(jù)實(shí)體中記錄著每一個(gè)文件名與該文件的inode號(hào)??梢姡叉溄颖举|(zhì)上是文件的一個(gè)別名。

1.3硬鏈接注意事項(xiàng)

硬鏈接有兩個(gè)限制:
(1)不能跨文件系統(tǒng);硬鏈接只是文件的別名,而非獨(dú)立的文件,因此僅能在單一文件系統(tǒng)上面進(jìn)行,所以不能跨文件系統(tǒng)。

(2)不能連接到目錄。因?yàn)橛叉溄舆B接到目錄可會(huì)導(dǎo)致目錄的inode與實(shí)體block形成環(huán)狀。此時(shí),如果刪除目錄,會(huì)導(dǎo)致目錄實(shí)體block無法被系統(tǒng)訪問,產(chǎn)生孤立的目錄(從根目錄無法再訪問)。如果要?jiǎng)h除孤立的目錄inode與實(shí)體block,需要執(zhí)行標(biāo)記和清理,這在磁盤上操作是非常耗時(shí)的。軟鏈接不會(huì)導(dǎo)致此問題,因?yàn)樗鼈儾粫?huì)增加目標(biāo)目錄的鏈接數(shù)。

比如對(duì)目錄/etc在其目錄或其子目錄中建立一個(gè)硬鏈接/etc/etc_hd,此時(shí)就會(huì)形成環(huán)狀,如下圖所示:

此時(shí),如果執(zhí)行rm -r /etc刪除目錄/etc,實(shí)際上目錄/etc并沒有被真正刪除,因?yàn)?etc的inode和block仍然殘留,編程孤立的目錄,此時(shí)從根目錄無法訪問/etc。

2.軟鏈接(soft link)

與硬鏈接不同的是軟鏈接會(huì)創(chuàng)立一個(gè)獨(dú)立的文件,該文件有自己的inode,但這個(gè)文件會(huì)讓數(shù)據(jù)的讀取指向它連接的那個(gè)文件。由于只是利用了文件來作為指向的操作,所以當(dāng)源文件被刪除后軟鏈接文件就會(huì)提示“打不開”,實(shí)際是找不到被刪除的源文件了。

下面創(chuàng)建軟鏈接并查看軟鏈接的屬性:

#創(chuàng)建軟鏈接
$ ln -s /etc/lvlv.txt lvlv_sb.txt

#查看文件屬性
$ ll -i 
7792474 -rw---x--x 2 b3335 b3335 22 Nov 9 21:05 lvlv.txt
[b3335@MIC root]$ ll -i 
7792478 lrwxrwxrwx 1 b3335 b3335 13 Nov 10 15:23 lvlv_sb.txt -> /etc/lvlv.txt

可以看出,軟鏈接的inode節(jié)點(diǎn)與源文件lvlv.txt不同,且軟鏈接的大小剛好等于字符串”/etc/lvlv.txt”的長(zhǎng)度13,可見軟鏈接是單獨(dú)的一個(gè)新的文件,文件的內(nèi)容就是指向的文件的路徑。

下面給出軟鏈接的示意圖,同樣以文件lvlv.txt為例。

以上就是區(qū)分Linux硬鏈接與軟鏈接的詳細(xì)內(nèi)容,更多關(guān)于Linux硬鏈接與軟鏈接的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • linux中通過文件描述符獲取文件絕對(duì)路徑的方法

    linux中通過文件描述符獲取文件絕對(duì)路徑的方法

    下面小編就為大家?guī)硪黄猯inux中通過文件描述符獲取文件絕對(duì)路徑的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • linux網(wǎng)絡(luò)NAT配置方式詳解

    linux網(wǎng)絡(luò)NAT配置方式詳解

    這篇文章主要為大家詳細(xì)介紹了linux網(wǎng)絡(luò)NAT配置方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • CentOS 7 安裝Chrome瀏覽器的方法

    CentOS 7 安裝Chrome瀏覽器的方法

    這篇文章主要介紹了CentOS 7 安裝Chrome瀏覽器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • linux掛載本地yum源問題

    linux掛載本地yum源問題

    這篇文章主要介紹了linux掛載本地yum源問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • linux停止jar包進(jìn)程方式

    linux停止jar包進(jìn)程方式

    這篇文章主要介紹了linux如何停止jar包進(jìn)程問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • VMware Workstation安裝(Linux內(nèi)核)銀河麒麟圖文教程

    VMware Workstation安裝(Linux內(nèi)核)銀河麒麟圖文教程

    這篇文章主要為大家詳細(xì)介紹了VMware Workstation安裝(Linux內(nèi)核)銀河麒麟,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 詳解CentOS 6.5如何安裝Realtek無線網(wǎng)卡驅(qū)動(dòng)

    詳解CentOS 6.5如何安裝Realtek無線網(wǎng)卡驅(qū)動(dòng)

    相信大家都應(yīng)該知道CentOS6.5不像CentOS7和Unbuntu那樣自動(dòng)安裝好了無線網(wǎng)卡驅(qū)動(dòng),如果想要在CentOS 6.5上實(shí)現(xiàn)無線上網(wǎng),我們就需要折騰一下,這篇文章給大家介紹了詳細(xì)的步驟,感興趣的朋友們下面來一起看看吧。
    2016-10-10
  • centos7系統(tǒng)下搭建docker本地鏡像倉(cāng)庫(kù)的方法

    centos7系統(tǒng)下搭建docker本地鏡像倉(cāng)庫(kù)的方法

    本篇文章主要介紹了CentOS 7 : Docker私有倉(cāng)庫(kù)搭建和使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • Linux如何關(guān)閉遠(yuǎn)程ssh密碼登錄

    Linux如何關(guān)閉遠(yuǎn)程ssh密碼登錄

    這篇文章主要介紹了Linux如何關(guān)閉遠(yuǎn)程ssh密碼登錄問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Apache 并發(fā)優(yōu)化設(shè)置方法

    Apache 并發(fā)優(yōu)化設(shè)置方法

    本文是對(duì)512M 內(nèi)存并裝有apache的vps進(jìn)行優(yōu)化,請(qǐng)不要跟我說裝nginx就強(qiáng)多了,確實(shí)如此,但是你這樣說的話,這篇文章就沒什么意義了
    2016-08-08

最新評(píng)論