- 相關(guān)推薦
linux下軟鏈接和硬鏈接的聯(lián)系
鏈接——是一種在共享文件和訪問(wèn)它的用戶的若干目錄項(xiàng)之間建立聯(lián)系的一種方法。在Linux中分為軟鏈接(hard link)和硬鏈接(soft link),其中軟鏈接又稱為符號(hào)鏈接(symbolic link)。下面小編準(zhǔn)備了linux下軟鏈接和硬鏈接的聯(lián)系,提供給大家參考!
1、索引節(jié)點(diǎn):
在linux系統(tǒng)中對(duì)文件的管理本質(zhì)上是通過(guò)其索引節(jié)點(diǎn)進(jìn)行管理的。從系統(tǒng)的角度來(lái)看,文件的索引節(jié)點(diǎn)(inode)是文件的唯一標(biāo)識(shí),它包含了文件系統(tǒng)處理文件所需要的全部信息。詳細(xì)來(lái)說(shuō),實(shí)際上存在兩種類型的索引節(jié)點(diǎn)
內(nèi)核索引節(jié)點(diǎn)(in-core indoe):保存在內(nèi)存中,在系統(tǒng)中每個(gè)打開的文件都對(duì)應(yīng)著一個(gè)內(nèi)核索引節(jié)點(diǎn),
磁盤索引節(jié)點(diǎn)(on-disk inode):在文件系統(tǒng)中的每一個(gè)文件都有一個(gè)磁盤索引節(jié)點(diǎn),保存在磁盤上,它所保存的具體信息與文件系統(tǒng)的類型有關(guān)。
注 意:這兩種索引節(jié)點(diǎn)的關(guān)系為:當(dāng)進(jìn)程打開一個(gè)文件時(shí),文件的磁盤索引節(jié)點(diǎn)中的信息就會(huì)被載入內(nèi)存,并建立一個(gè)內(nèi)核索引節(jié)點(diǎn)。當(dāng)內(nèi)核索引節(jié)點(diǎn)被修改后,系統(tǒng) 負(fù)責(zé)將其同步到磁盤上。磁盤索引節(jié)點(diǎn)與對(duì)應(yīng)的內(nèi)核索引節(jié)點(diǎn)所保存的信息并不是完全相同的。內(nèi)核索引節(jié)點(diǎn)記錄的是關(guān)于文件的更通用的一些信息,而忽略掉于具 體文件系統(tǒng)類型相關(guān)的一些信息。
2、硬鏈接:
就是讓一個(gè)文件對(duì)應(yīng)一個(gè)或者多個(gè)文件名,或者說(shuō)文件名和文件系統(tǒng)使用的節(jié)點(diǎn)號(hào)鏈接起來(lái),這些文件可以在同一目錄或者不同目錄下。一個(gè)文件名對(duì)應(yīng)多個(gè)文件名,稱作該文件的鏈接數(shù)。例如:
ln [options] existingfile newfile
ln [options] existingfile-list directory
用法:
第一種為”existingfile”創(chuàng)建硬鏈接,文件名為”newfile”。
第二種在”directory”目錄中,為” existingfile-list”中包含的所有文件創(chuàng)建一個(gè)同名的硬鏈接。
常用可選[options]:-f 無(wú)論”newfile”存在與否,都創(chuàng)建鏈接。-n 如果”newfile”已存在,就不創(chuàng)建鏈接。
3、軟鏈接:
又稱為符號(hào)鏈接,實(shí)際上是一中特殊的文件,這種文件包含了另一個(gè)文集那的人一個(gè)路徑名。這個(gè)路徑名指向位于任意一個(gè)文件系統(tǒng)的任意一個(gè)文件,甚至可以指向一個(gè)不存在的文件。系統(tǒng)會(huì)自動(dòng)的把對(duì)符號(hào)鏈接的操作轉(zhuǎn)換為對(duì)源文件的操作。其使用和硬鏈接的使用類似,
軟鏈接又叫符號(hào)鏈接,這個(gè)文件包含了另一個(gè)文件的路徑名。可以是任意文件或目錄,可以鏈接不同文件系統(tǒng)的文件。和win下的快捷方式差不多。
可以用:ln -s 命令來(lái)建立軟鏈接。
引用
ln -s existingfile newfile
ln -s existingfile-list directory
下面我們用一個(gè)實(shí)例來(lái)說(shuō)明硬鏈接和軟鏈接。
現(xiàn)在目錄下有兩個(gè)文件,一個(gè)名為AAA,一個(gè)名為BBB。
引用
$ ls -il
963922 -rw-r--r-- 1 ocean ocean 92 2007-05-18 15:46 AAA
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB
首先先做一個(gè)AAA的硬鏈接。
引用
$ ln AAA AAAhard
$ls -il
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAA
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAAhard
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB
這里我們注意在創(chuàng)建鏈接前,AAA顯示的鏈接數(shù)目為1,創(chuàng)建鏈接后
1.AAA和AAAhard的鏈接數(shù)目都變?yōu)?。
2.AAA和AAAhard的inode號(hào)是一樣的,都是963922。
3.AAA和AAAhard顯示的文件大小也是一樣,都是92B。
可見進(jìn)行了ln命令的操作結(jié)果:AAA和AAAhard是同一個(gè)文件的兩個(gè)名字,它們具有同樣的索引節(jié)點(diǎn)號(hào)和文件屬性,建立文件AAA的硬鏈接,就是為 AAA的文件索引節(jié)點(diǎn)在當(dāng)前目錄上建立一個(gè)新指針。你可以刪除其中任何一個(gè),如rm AAA,每次只會(huì)刪除一個(gè)指針,鏈接數(shù)同時(shí)減一,只有將所有指向文件內(nèi)容的指針,也即鏈接數(shù)減為0時(shí),內(nèi)核才會(huì)把文件內(nèi)容從磁盤上刪除。
盡管硬鏈接節(jié)省空間,也是Linux系統(tǒng)整合文件系統(tǒng)的傳統(tǒng)方式,但是存在一些不足之處:
1.不允許給目錄創(chuàng)建硬鏈接。
2.不可以在不同文件系統(tǒng)的文件間建立鏈接。
接著我們做一個(gè)指向BBB的軟鏈接,軟鏈接克服了硬鏈接的不足,沒(méi)有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件進(jìn)行鏈接。
引用
$ ln -s BBB BBBsoft
$ ls -il
總用量 0
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAA
963922 -rw-r--r-- 2 ocean ocean 92 2007-05-18 15:46 AAAhard
963923 -rw-r--r-- 1 ocean ocean 95 2007-05-18 15:46 BBB
963924 lrwxrwxrwx 1 ocean ocean 3 2007-05-18 15:47 BBBsoft -> BBB
從上面鏈接后的結(jié)果可以看出來(lái)軟鏈接與硬鏈接,區(qū)別不僅僅是在概念上,在實(shí)現(xiàn)上也是完全不同的。
區(qū)別:
1.硬鏈接原文件/鏈接文件公用一個(gè)inode號(hào),說(shuō)明他們是同一個(gè)文件,而軟鏈接原文件/鏈接文件擁有不同的inode號(hào),表明他們是兩個(gè)不同的文件;
2.在文件屬性上軟鏈接明確寫出了是鏈接文件,而硬鏈接沒(méi)有寫出來(lái),因?yàn)樵诒举|(zhì)上硬鏈接文件和原文件是完全平等關(guān)系;
3.鏈接數(shù)目是不一樣的,軟鏈接的鏈接數(shù)目不會(huì)增加;
4.文件大小是不一樣的,硬鏈接文件顯示的大小是跟原文件是一樣的。而這里軟鏈接顯示的大小與原文件就不同了,BBB大小是95B,而BBBsoft是3B。
總之,建立軟鏈接就是建立了一個(gè)新文件。當(dāng)訪問(wèn)鏈接文件時(shí),系統(tǒng)就會(huì)發(fā)現(xiàn)他是個(gè)鏈接文件,它讀取鏈接文件找到真正要訪問(wèn)的文件。
當(dāng)然軟鏈接也有硬鏈接沒(méi)有的缺點(diǎn),因?yàn)殒溄游募性募穆窂叫畔,所以?dāng)原文件從一個(gè)目錄下移到其他目錄中,再訪問(wèn)鏈接文件,系統(tǒng)就找不到了,而硬鏈接就沒(méi)有這個(gè)缺陷,你想怎么移就怎么移;還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點(diǎn)和保存原文件的路徑。
【linux下軟鏈接和硬鏈接的聯(lián)系】相關(guān)文章:
WAP教程:WML 鏈接和圖像10-31
HTML超鏈接07-07
揭秘利用ajax實(shí)現(xiàn)預(yù)覽鏈接看鏈接的內(nèi)容10-19
ppt取消超鏈接10-15
word如何超鏈接06-25
容易混淆的鏈接詳解06-02
php超鏈接跳轉(zhuǎn)09-27
word清除超鏈接10-24
網(wǎng)站鏈接優(yōu)化方法09-23