解決Linux文件共享問題,Linux硬鏈軟鏈詳解
為解決文件的共享使用,Linux 系統(tǒng)引入了兩種鏈接:硬鏈接 (hard link) 與軟鏈接(又稱符號(hào)鏈接,即 soft link 或 symbolic link)。鏈接為 Linux 系統(tǒng)解決了文件的共享使用,還帶來了隱藏文件路徑、增加權(quán)限安全及節(jié)省存儲(chǔ)等好處。
若一個(gè) inode 號(hào)對(duì)應(yīng)多個(gè)文件名,則稱這些文件為硬鏈接。換言之,硬鏈接就是同一個(gè)文件使用了多個(gè)別名。硬鏈接可由命令 link 或 ln 創(chuàng)建。
由于硬鏈接是有著相同 inode 號(hào)僅文件名不同的文件,因此硬鏈接存在以下幾點(diǎn)特性:
文件有相同的 inode 及 data block;只能對(duì)已存在的文件進(jìn)行創(chuàng)建;不能交叉文件系統(tǒng)進(jìn)行硬鏈接的創(chuàng)建;不能對(duì)目錄進(jìn)行創(chuàng)建,只可對(duì)文件創(chuàng)建;刪除一個(gè)硬鏈接文件并不影響其他有相同 inode 號(hào)的文件。
硬鏈接不能對(duì)目錄創(chuàng)建是受限于文件系統(tǒng)的設(shè)計(jì)?,F(xiàn) Linux 文件系統(tǒng)中的目錄均隱藏了兩個(gè)個(gè)特殊的目錄:當(dāng)前目錄(.)與父目錄(..)。查看這兩個(gè)特殊目錄的 inode
號(hào)可知其實(shí)這兩目錄就是兩個(gè)硬鏈接。若系統(tǒng)允許對(duì)目錄創(chuàng)建硬鏈接,則會(huì)產(chǎn)生目錄環(huán)。
軟鏈接與硬鏈接不同,若文件用戶數(shù)據(jù)塊中存放的內(nèi)容是另一文件的路徑名的指向,則該文件就是軟連接。軟鏈接就是一個(gè)普通文件,只是數(shù)據(jù)塊內(nèi)容有點(diǎn)特殊。軟鏈接有著自己的 inode 號(hào)以及用戶數(shù)據(jù)塊。因此軟鏈接的創(chuàng)建與使用沒有類似硬鏈接的諸多限制:
軟鏈接有自己的文件屬性及權(quán)限等;可對(duì)不存在的文件或目錄創(chuàng)建軟鏈接;軟鏈接可交叉文件系統(tǒng);軟鏈接可對(duì)文件或目錄創(chuàng)建;創(chuàng)建軟鏈接時(shí),鏈接計(jì)數(shù) i_nlink 不會(huì)增加;刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關(guān)軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創(chuàng)建,死鏈接可恢復(fù)為正常的軟鏈接)。