linux的硬鏈接和軟連接的區(qū)別及說明
1)軟鏈接(符號(hào)鏈接symbol),等同于Windows中快捷方式
ln -s 源文件名 符號(hào)鏈接文件名,源文件名和符號(hào)鏈接文件名是主從關(guān)系,源被刪了,符號(hào)鏈接也就失效了
eg: ln -s src.c linker.c (linker.c就是src.c的一個(gè)符號(hào)鏈接文件);
2)硬鏈接,ln 源文件名 符號(hào)鏈接文件名,源文件名和符號(hào)鏈接文件名是并列關(guān)系,源被刪了,符號(hào)鏈接依然有效。硬鏈接實(shí)際上和源文件在硬盤中是同一個(gè)東西,效果類似于硬盤上的一個(gè)文件,在文件系統(tǒng)上,在我們看來有好多個(gè)文件一樣。每次刪除一個(gè)文件時(shí),只要他還有其他的硬鏈接存在,這個(gè)文件就不會(huì)被真正刪除。只有等所有的鏈接文件都刪除掉了,這個(gè)文件才會(huì)被真正從硬盤上刪除
軟鏈接與硬鏈接的區(qū)別(通俗):
硬鏈接可認(rèn)為是一個(gè)文件擁有兩個(gè)文件名;
而軟鏈接則是系統(tǒng)新建一個(gè)鏈接文件,此文件指向其所要指的文件
若源文件改名,則軟連接不可用(找不到源文件);硬鏈接可正常訪問到源文件;
修改軟連接、硬鏈接和源文件,訪問三者都是同步變化的。
軟鏈接首先,我建立link_test.txt的測(cè)試文件,建立軟連接指向測(cè)試文件
ln -s 源文件 軟連接
查看軟連接的內(nèi)容和源文件內(nèi)容一樣,接著編輯了軟連接后,查看軟連接和原測(cè)試文件
說明編輯軟連接就是編輯原文件。測(cè)試刪除軟連接后原文件正常,刪除源文件后軟連接失效。
同樣,當(dāng)我們修改任何一個(gè)軟鏈接文件都會(huì)使內(nèi)容發(fā)生改變,文件都保持同步變化。我們也可以看到軟鏈接只有18Kb并不會(huì)占用磁盤空間。它只是一個(gè)原文件的引用,當(dāng)我們將原文件刪除以后,引用將會(huì)失效。
硬鏈接ln 源文件 硬連接
建立硬鏈接后發(fā)現(xiàn),硬鏈接的大小和原文件一樣,并且索引節(jié)點(diǎn)號(hào)也一樣。當(dāng)我們改變硬鏈接的文件內(nèi)容時(shí),同樣也會(huì)改變?cè)募膬?nèi)容。
改變?cè)募?nèi)容,軟硬鏈接內(nèi)容也都同步改變:
軟連接失效,硬鏈接正常
當(dāng)我們用cp命令復(fù)制軟鏈接時(shí),我們復(fù)制的是原文件,而不是一個(gè)軟鏈接。
復(fù)制軟、硬鏈接后,對(duì)復(fù)制文件修改,都不會(huì)影響原文件。
由于 Linux 下的文件是通過索引節(jié)點(diǎn)(inode)來識(shí)別文件,硬鏈接可以認(rèn)為是一個(gè)指針, 指向文件索引節(jié)點(diǎn)的指針,系統(tǒng)并不為它重新分配 inode 。每添加一個(gè)一個(gè)硬鏈接,文件的鏈接 數(shù)就加 1 。
不足:
1. 不可以在不同文件系統(tǒng)的文件間建立鏈接;
2. 只有超級(jí)用戶才可以為目錄創(chuàng)建硬鏈接。
軟鏈接軟鏈接克服了硬鏈接的不足,沒有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符 號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件 進(jìn)行鏈接。
不足:
因?yàn)殒溄游募性募穆窂叫畔?,所以?dāng)原文件從一個(gè)目錄下移到其他目錄 中,再訪問鏈接文件,系統(tǒng)就找不到了,而硬鏈接就沒有這個(gè)缺陷,你想怎么移就怎么移; 還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點(diǎn)和保存原文件的路徑。
實(shí)際場(chǎng)景下,基本是使用軟鏈接。
總結(jié)區(qū)別如下:
硬鏈接不可以跨分區(qū),軟件鏈可以跨分區(qū)。
硬鏈接指向一個(gè) inode 節(jié)點(diǎn),而軟鏈接則是創(chuàng)建一個(gè)新的 inode 節(jié)點(diǎn)。
刪除硬鏈接文件,不會(huì)刪除原文件,刪除軟鏈接文件,會(huì)把原文件刪除。
總結(jié)以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
