濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 實(shí)例講解Linux系統(tǒng)中硬鏈接與軟鏈接的創(chuàng)建

實(shí)例講解Linux系統(tǒng)中硬鏈接與軟鏈接的創(chuàng)建

熱門(mén)標(biāo)簽:百度中國(guó)地圖標(biāo)注中心 安陽(yáng)百應(yīng)電銷(xiāo)機(jī)器人加盟 pageadm實(shí)現(xiàn)地圖標(biāo)注 琿春市地圖標(biāo)注app 依蘭縣地圖標(biāo)注app 潮州地圖標(biāo)注 山東企業(yè)電銷(xiāo)機(jī)器人價(jià)格 公司400電話辦理價(jià)格 百度地圖標(biāo)注開(kāi)鎖電話

首先要弄清楚,在Linux系統(tǒng)中,內(nèi)核為每一個(gè)新創(chuàng)建的文件分配一個(gè)Inode(索引結(jié)點(diǎn)),每個(gè)文件都有一個(gè)惟一的inode號(hào)。文件屬性保存在索引結(jié)點(diǎn)里,在訪問(wèn)文件時(shí),索引結(jié)點(diǎn)被復(fù)制到內(nèi)存在,從而實(shí)現(xiàn)文件的快速訪問(wèn)。
鏈接是一種在共享文件和訪問(wèn)它的用戶的若干目錄項(xiàng)之間建立聯(lián)系的一種方法。Linux中包括兩種鏈接:硬鏈接(Hard Link)和軟鏈接(Soft Link),軟鏈接又稱為符號(hào)鏈接(Symbolic link)。

一、硬鏈接
硬鏈接說(shuō)白了是一個(gè)指針,指向文件索引節(jié)點(diǎn),系統(tǒng)并不為它重新分配inode??梢杂?ln命令來(lái)建立硬鏈接。語(yǔ)法:

復(fù)制代碼
代碼如下:

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)建鏈接。
下面舉一些例子:

復(fù)制代碼
代碼如下:

$ ls –il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2

復(fù)制代碼
代碼如下:

$ ln file2 file2hard
$ ls –il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
注意在創(chuàng)建鏈接前,file1 顯示的鏈接數(shù)目為1,創(chuàng)建鏈接后(1)file1和file1hard的鏈接數(shù)目都變?yōu)?;(2) file1和file1hard在inode號(hào)是一樣的(3) file1和file1hard顯示的文件大小也是一樣。可見(jiàn)進(jìn)行了ln命令的操作結(jié)果:file1和file1hard是同一個(gè)文件的兩個(gè)名字,它們具 有同樣的索引節(jié)點(diǎn)號(hào)和文件屬性,建立文件file1的硬鏈接,就是為file1的文件索引節(jié)點(diǎn)在當(dāng)前目錄上建立一個(gè)新指針。
鏈接數(shù)同時(shí)減一,只有將所有指向文件內(nèi)容的指針,也即鏈接數(shù)減為0時(shí),內(nèi)核才會(huì)把文件內(nèi)容從磁盤(pán)上刪除。當(dāng)前目錄邏輯結(jié)構(gòu):(不好意思圖沒(méi)有顯示出來(lái))。
還可以在不同目錄,但同一文件系統(tǒng)中建立文件的硬鏈接。設(shè)file1、file2在目錄/home/longcheng/dir1中,下面的命令,在/home/longcheng中建立file2的硬鏈接。

復(fù)制代碼
代碼如下:

ln file2 /home/longcheng/file2hard

下面的程序,是將dir1目錄中所有文件,在目錄dir2中建立硬鏈接

復(fù)制代碼
代碼如下:

$mkdir dir2
$ln /home/longcheng/dir1/* /home/longcheng/dir2

如果使用了 ln –f existingfile newfile,如果newfile已經(jīng)存在,則無(wú)論原來(lái)newfile是什么文件,只用當(dāng)前用戶對(duì)它有寫(xiě)權(quán)限,newfile就成為exisitngfile的硬鏈接文件。
盡管硬鏈接節(jié)省空間,也是Linux系統(tǒng)整合文件系統(tǒng)的傳統(tǒng)方式,但是存在一下不足之處:
(1)不可以在不同文件系統(tǒng)的文件間建立鏈接
(2)只有超級(jí)用戶才可以為目錄創(chuàng)建硬鏈接。雖然很多樹(shù)上說(shuō)root用戶可以創(chuàng)建,但是筆者在學(xué)習(xí)過(guò)程中發(fā)現(xiàn)即使是root用戶也不能創(chuàng)建,我的系統(tǒng)是Redhat,內(nèi)核2.4、2.6都試過(guò),在其他系統(tǒng)中不知道是不是可以。

二、軟鏈接(符號(hào)鏈接)
軟鏈接克服了硬鏈接的不足,沒(méi)有任何文件系統(tǒng)的限制,任何用戶可以創(chuàng)建指向目錄的符號(hào)鏈接。因而現(xiàn)在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機(jī)器、不同網(wǎng)絡(luò)對(duì)文件進(jìn)行鏈接。
建立軟鏈接,只要在ln后面加上選項(xiàng) –s,下面舉個(gè)例子

復(fù)制代碼
代碼如下:

$ ls -il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard

復(fù)制代碼
代碼如下:

$ln –s file1 file1soft
$ls -il

13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2
13059 -rwx - - - - - - 2 longcheng longcheng 57 8月 5 16:40 file2hard
13061 lrwxrwxrwx 1 longcheng longcheng 5 8月 5 16:58 file1soft->file1
從上面鏈接后的結(jié)果可以看出來(lái)軟鏈接與硬鏈接,區(qū)別不僅僅是在概念上,在實(shí)現(xiàn)上也是不同的。區(qū)別:硬鏈接原文件&鏈接文件公用一個(gè)inode號(hào),說(shuō)明他 們是同一個(gè)文件,而軟鏈接原文件&鏈接文件擁有不同的inode號(hào),表明他們是兩個(gè)不同的文件;在文件屬性上軟鏈接明確寫(xiě)出了是鏈接文件,而硬鏈接沒(méi)有寫(xiě) 出來(lái),因?yàn)樵诒举|(zhì)上硬鏈接文件和原文件是完全平等關(guān)系;鏈接數(shù)目是不一樣的,軟鏈接的鏈接數(shù)目不會(huì)增加;文件大小是不一樣的,硬鏈接文件顯示的大小是跟原 文件是一樣的,這用強(qiáng)調(diào),因?yàn)槭堑韧穆?,而這里軟鏈接顯示的大小與原文件就不同了,file1大小是48B,而file1soft是5B,這里面的5實(shí) 際上就是“file1”的大小。
總之,建立軟鏈接就是建立了一個(gè)新文件。當(dāng)訪問(wèn)鏈接文件時(shí),系統(tǒng)就會(huì)發(fā)現(xiàn)他是個(gè)鏈接文件,它讀取鏈接文件找到真正要訪問(wèn)的文件。
在不同系統(tǒng)之間建立軟鏈接、對(duì)目錄建立鏈接,這里就不舉例了,讀者可以自己去嘗試,我也是在不斷實(shí)踐中學(xué)習(xí)的。
當(dāng)然軟鏈接也有硬鏈接沒(méi)有的缺點(diǎn),因?yàn)殒溄游募性募穆窂叫畔?,所以?dāng)原文件從一個(gè)目錄下移到其他目錄中,再訪問(wèn)鏈接文件,系統(tǒng)就找不到 了~~,而硬鏈接就沒(méi)有這個(gè)缺陷,你想怎么移就怎么移(呵呵);還有它要系統(tǒng)分配額外的空間用于建立新的索引節(jié)點(diǎn)和保存原文件的路徑。
補(bǔ)充一下:可以通過(guò)symlink來(lái)查看鏈接文件,可以用 man symlink來(lái)學(xué)習(xí)。

標(biāo)簽:林芝 公主嶺 香港 三明 晉中 常德 呼和浩特 連云港

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《實(shí)例講解Linux系統(tǒng)中硬鏈接與軟鏈接的創(chuàng)建》,本文關(guān)鍵詞  實(shí)例,講解,Linux,系統(tǒng),中硬,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《實(shí)例講解Linux系統(tǒng)中硬鏈接與軟鏈接的創(chuàng)建》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于實(shí)例講解Linux系統(tǒng)中硬鏈接與軟鏈接的創(chuàng)建的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    四子王旗| 通辽市| 阿克陶县| 永城市| 吉木萨尔县| 安阳县| 宣汉县| 托克逊县| 塔城市| 庄浪县| 富蕴县| 务川| 咸阳市| 平度市| 公主岭市| 甘德县| 伊川县| 莫力| 保定市| 博白县| 云和县| 石屏县| 石嘴山市| 黑山县| 长宁区| 萍乡市| 哈巴河县| 山阳县| 新宾| 道真| 平凉市| 新河县| 承德县| 陈巴尔虎旗| 常山县| 绍兴县| 行唐县| 蓬安县| 黔南| 政和县| 合阳县|