硬鏈接與軟鏈接的聯(lián)系與區(qū)別
文件都有文件名與數(shù)據(jù),這在 Linux 上被分成兩個(gè)部分:用戶數(shù)據(jù) (user data) 與元數(shù)據(jù) (metadata)。用戶數(shù)據(jù),即文件數(shù)據(jù)塊 (data block),數(shù)據(jù)塊是記錄文件真實(shí)內(nèi)容的地方;而元數(shù)據(jù)則是文件的附加屬性,如文件大小、創(chuàng)建時(shí)間、所有者等信息。元數(shù)據(jù)中的inode才是文件的唯一標(biāo)識(shí)而非文件名。為了方便使用者記憶和使用才有了文件名。
為了解決文件的共享使用,Linux系統(tǒng)就引入了兩種鏈接:硬鏈接和軟鏈接(又叫符號(hào)鏈接)。鏈接為L(zhǎng)inux系統(tǒng)解決了文件共享使用,還帶來(lái)了隱藏文件路徑,增加權(quán)限安全及節(jié)省存儲(chǔ)等眾多實(shí)用的便利。
硬鏈接:如果一個(gè)inode號(hào)對(duì)應(yīng)多個(gè)文件名,則稱這些文件為硬鏈接。也就是說(shuō)硬鏈接就是同一個(gè)文件使用了多個(gè)名字,他們有一個(gè)共同的inode號(hào)。
軟連接:在liunx中的所有都是以文件表示的,軟連接可以看成一個(gè)文本文件,它的內(nèi)容是保存目標(biāo)文件名的路徑地址,這個(gè)文件包含了另一個(gè)文件的路徑名,而且可以是任意文件或目錄,通俗點(diǎn)說(shuō)就跟win下的快捷方式差不多。使用相對(duì)路徑創(chuàng)建的軟鏈接被移動(dòng)后該軟鏈接文件將成為一個(gè)死鏈接
兩者的區(qū)別:
1.硬鏈接不能對(duì)目錄創(chuàng)建,只能對(duì)文件創(chuàng)建。
2.文件有相同的 inode 及文件數(shù)據(jù)塊( data block);
3.不能交叉文件系統(tǒng)進(jìn)行硬鏈接的創(chuàng)建;
4.只能對(duì)已存在的文件進(jìn)行創(chuàng)建;
5.刪除一個(gè)硬鏈接文件并不影響其他有相同 inode 號(hào)的文件。
6.軟鏈接有自己的文件屬性及權(quán)限等;
7.可對(duì)不存在的文件或目錄創(chuàng)建軟鏈接;
8.軟鏈接可交叉文件系統(tǒng);
9.軟鏈接可對(duì)文件或目錄創(chuàng)建;
10.創(chuàng)建軟鏈接時(shí),鏈接計(jì)數(shù) i_nlink 不會(huì)增加;
11 .刪除軟鏈接并不影響被指向的文件,但若被指向的原文件被刪除,則相關(guān)軟連接被稱為死鏈接(即 dangling link,若被指向路徑文件被重新創(chuàng)建,死鏈接可恢復(fù)為正常的軟鏈接)。
會(huì)員登錄
賬號(hào)登錄還沒(méi)有賬號(hào)?立即注冊(cè)