日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux系统 硬链接和软链接

發(fā)布時(shí)間:2023/12/10 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux系统 硬链接和软链接 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

背景:

當(dāng)幾個(gè)用戶(hù)同在一個(gè)項(xiàng)目里工作時(shí)。經(jīng)常須要共享文件。

假設(shè)一個(gè)共享文件同一時(shí)候出如今屬于不同用戶(hù)的不同文件夾下。工作起來(lái)就非常方便。

比如B和C文件夾下有一文件D是兩者都能夠訪問(wèn)和改動(dòng)的共享文件,這樣是非常方便,但也會(huì)有一些問(wèn)題,假設(shè)文件夾中包括磁盤(pán)地址,則當(dāng)連接文件時(shí)。必須把C文件夾中的磁盤(pán)地址拷貝到B文件夾中,假設(shè)B或C隨后又往該文件里加入內(nèi)容,則新的數(shù)據(jù)塊將僅僅列入進(jìn)行加入工作的用戶(hù)的文件夾中。

其它的用戶(hù)對(duì)此改變是不知道的。違背了共享的目的。

兩種方法解決這樣的問(wèn)題。

方法一:硬鏈接(實(shí)體連接或?qū)嶋H連接)

透過(guò)文件系統(tǒng)的inode 連結(jié)來(lái)產(chǎn)生新檔名。而不是產(chǎn)生新檔案!這樣的又稱(chēng) 為實(shí)體鏈接 (hardlink).

· 每一個(gè)檔案都會(huì)占用一個(gè)inode ,檔案內(nèi)容由 inode的記錄來(lái)指向;

· 想要讀取該檔案。必項(xiàng)要經(jīng)過(guò)文件夾記錄的文件名稱(chēng)來(lái)指向到正確的inode 號(hào)碼才干讀取。??? 也就是說(shuō),事實(shí)上文件名稱(chēng)僅僅與文件夾有關(guān),可是檔案內(nèi)容則與 inode 有關(guān)。那舉想一想, 有沒(méi)有可能有多個(gè)檔名相應(yīng)到同一個(gè) inode 號(hào)碼呢?有的!那就是 hard link 的由來(lái)。

所以簡(jiǎn)單的說(shuō):hard link 僅僅是在某個(gè)文件夾下新增一筆檔名鏈接到某 inode 號(hào)碼的關(guān)連記彔而已。
[

舉個(gè)樣例來(lái)說(shuō)。如果我系統(tǒng)有個(gè) /root/crontab 他是 /etc/crontab 的實(shí)體鏈接,也就是說(shuō)這兩個(gè)檔名 連結(jié)到同一個(gè) inode ,自然這兩個(gè)文件名稱(chēng)的全部相關(guān)信息都會(huì)一模一樣(除了文件名稱(chēng)之外)。實(shí)際的情況能夠例如以下所看到的:


你能夠發(fā)現(xiàn)兩個(gè)檔名都連結(jié)到 1912701 這個(gè) inode 號(hào)碼。所以您瞧瞧。是否檔案的權(quán)限/屬性全然一 樣呢? 由于這兩個(gè)『檔名』事實(shí)上是一模一樣的『檔案』啦!并且你也會(huì)發(fā)現(xiàn)第二個(gè)字段由原本的 1 發(fā) 成 2 了。 那個(gè)字段稱(chēng)為『連結(jié)』。這個(gè)字段的意義為:『 有多少個(gè)檔名鏈接到這個(gè) inode 號(hào)碼』的意思。

假設(shè)將讀取到正確數(shù)據(jù)的方式畫(huà)成示意圖。就類(lèi)似例如以下畫(huà)面:


你能夠透過(guò) 1 或 2 的文件夾的 inode 指定的block 找到兩個(gè)不同的檔名,而無(wú)論使用哪 個(gè)檔名均能夠指到 real 那個(gè) inode 去讀取到終于數(shù)據(jù)!那這樣有優(yōu)點(diǎn)呢?最大的優(yōu)點(diǎn)就是『安 全』!

如同上圖中, 假設(shè)你將不論什么一個(gè)『檔名』刪除,事實(shí)上 inode 與 block 都還是存在的!

此時(shí)你能夠透過(guò)還有一個(gè)『檔名』來(lái)讀取到正確的檔案數(shù)據(jù)喔!此外,不論你使用哪個(gè)『檔名』來(lái)編輯,終于的結(jié)果都會(huì)寫(xiě)入到同樣的 inode 與block 中。因此均能進(jìn)行數(shù)據(jù)的改動(dòng)。攻克了上述的問(wèn)題,一般來(lái)說(shuō),使用 hard link 設(shè)定鏈接文件時(shí),磁盤(pán)的空間與 inode 的數(shù)目都不會(huì)改發(fā)。我們還是由圖 2.2.1 來(lái)看,由圖中能夠知道。 hard link 僅僅是在某個(gè)文件夾下的 block 多寫(xiě)入一個(gè)關(guān)連數(shù)據(jù)而已。既不會(huì)添加 inode 也不會(huì)耗用 block 數(shù)量。

Tips:

簡(jiǎn)單來(lái)講:硬鏈接就是同一文件使用了多個(gè)別名(有共同的inode),是不同的文件指向同樣的inode。達(dá)到文件共享的目的;

長(zhǎng)處:安全,改動(dòng)同步。刪除一個(gè)硬鏈接文件并不影響其它有同樣inode號(hào)的文件;

缺點(diǎn):不能跨 Filesystem,不能 link 文件夾。

不能跨Filesystem:由圖 2.2.1 其實(shí)我們也可以知道,其實(shí) hard link 應(yīng)該僅能在單一文件系統(tǒng)中進(jìn)行的。應(yīng)該是不可以跨文件系統(tǒng)才對(duì)!

由于圖 2.2.1 就是在同一個(gè) filesystem 上嘛!所以 hard link 是有限制的。

不能link文件夾:由于假設(shè)使用 hard link 鏈接到目彔時(shí), 鏈接癿數(shù)據(jù)須要連同被鏈接目彔底下的全部數(shù)據(jù)都建立鏈接,舉例來(lái)說(shuō),假設(shè)你要將 /etc 使用實(shí)體鏈接建立一個(gè) /etc_hd 的目彔時(shí)。那舉在 /etc_hd 底下的全部檔名同一時(shí)候都與/etc 底下的檔名要建立 hard link 的。而不是僅連結(jié)到 /etc_hd 與/etc 而已。

而且,未來(lái)假設(shè)須要在 /etc_hd 底下簡(jiǎn)歷新檔案時(shí),連帶的/etc底下的數(shù)據(jù)又得要建立一次hard link,因此造成環(huán)境相當(dāng)大的復(fù)雜度。所以不能link文件夾。

hard link?的制作中,事實(shí)上還是可能會(huì)改發(fā)系統(tǒng)的block。那就是當(dāng)你新增這筆數(shù)
據(jù)卻剛好將文件夾的block 填滿(mǎn)時(shí)。就可能會(huì)新加一個(gè)block 來(lái)記錄文件名稱(chēng)關(guān)連性。
而尋致磁盤(pán)空間的變化。只是。一般 hard link 所用掉的關(guān)連數(shù)據(jù)量非常小。所以通常
不會(huì)改發(fā) inode 與磁盤(pán)空間的大小喔

方法二:軟鏈接(符號(hào)連接即快捷方式)

相對(duì)于hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在建立一個(gè)獨(dú)立的檔案,而這個(gè)檔案會(huì)讓數(shù)據(jù) 的讀取指向他link的那個(gè)檔案的檔名。由與僅僅是利用檔案來(lái)做為指向的動(dòng)作, 所以。當(dāng)來(lái)源檔被刪除之后。symboliclink 的檔案會(huì)『開(kāi)不了』 , 會(huì)一直說(shuō)『無(wú)法開(kāi)啟某檔案!』。實(shí)際上就是找不到原始『檔名』而已啦!

舉例來(lái)說(shuō),我們先建立一個(gè)符號(hào)鏈接文件鏈接到 /etc/crontab 去看看:


我們能夠知道兩個(gè)檔案指向不同的iode 號(hào)碼,當(dāng)然就是兩個(gè)獨(dú)立的檔案存在! 并且連結(jié)檔的重要內(nèi)容就是他會(huì)寫(xiě)上目標(biāo)檔案的『文件名稱(chēng)』 , 你能夠發(fā)現(xiàn)為什么上表中連結(jié)檔的大小為 12 bytes 呢? 由于箭頭(-->)右邊的檔名『 /etc/crontab』總共同擁有 12 個(gè)英文。每一個(gè)英文占用 1 個(gè) byes , 所以檔案大小就是12bytes 了。 關(guān)于上述的說(shuō)明,我們以例如以下圖示來(lái)解釋:


由 1 號(hào) inode 讀取到連結(jié)檔的內(nèi)容僅有檔名,依據(jù)檔名鏈接到正確的目彔去取得目標(biāo)檔案的inode , 終于就能夠讀取到正確的數(shù)據(jù)了。你能夠發(fā)現(xiàn)的是。假設(shè)目標(biāo)檔案(/etc/crontab)被刪除了,那整個(gè)環(huán)節(jié)就會(huì)無(wú)法繼續(xù)進(jìn)行下去。所以就會(huì)產(chǎn)生無(wú)法透過(guò)連結(jié)檔讀取的問(wèn)題了! 這里還是得特別留意,這個(gè) Symbolic Link 與 Windows 的快捷方式能夠給他劃上等號(hào),由 Symbolic link 所建立的檔案為一個(gè)獨(dú)立的新的檔案。所以會(huì)占用掉 inode 與 block 喔! 由上面的說(shuō)明來(lái)看。似乎 hard link 比較安全。由于即使某一個(gè)目彔下的關(guān)連數(shù)據(jù)被殺掉了, 也沒(méi)有關(guān)系,僅僅要有不論什么一個(gè)目彔下存在著關(guān)連數(shù)據(jù),那舉該檔案就不會(huì)不見(jiàn)!舉上面的樣例來(lái)說(shuō),我的 /etc/crontab 與 /root/crontab 指向同一個(gè)檔案,假設(shè)我刪除了 /etc/crontab 這個(gè)檔案,該刪除的動(dòng)作事實(shí)上僅僅是將 /etc 目彔下關(guān)于crontab 的關(guān)連數(shù)據(jù)拿掉而已, crontab 所在的 inode 與 block 事實(shí)上都沒(méi)有變動(dòng)。

軟鏈接:文件用戶(hù)數(shù)據(jù)中有效的內(nèi)容是還有一文件的路徑名的指向。是一普通文件,數(shù)據(jù)塊有點(diǎn)特殊。刪除軟鏈接不影響源文件。

長(zhǎng)處:方便,能夠用到文件夾。

僅僅要簡(jiǎn)單地提供一個(gè)機(jī)器的網(wǎng)絡(luò)地址以及文件在該機(jī)器上駐留的路徑。就能夠連接全球不論什么地方機(jī)器上的文件。

缺點(diǎn):須要額外的開(kāi)銷(xiāo)。必須讀取包括路徑的文件,然后要一個(gè)部分一個(gè)部分的掃描路徑,直到找到inode節(jié)點(diǎn),也須要額外的磁盤(pán)存取。刪除源文件,鏈接文件為死文件。

由于硬鏈接應(yīng)用受到限制。軟鏈接應(yīng)用較為廣泛。



轉(zhuǎn)載于:https://www.cnblogs.com/yutingliuyl/p/7049841.html

總結(jié)

以上是生活随笔為你收集整理的linux系统 硬链接和软链接的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。