Linux認證

當前位置 /首頁/IT認證/Linux認證/列表

linux下軟連結和硬連結的聯絡

連結——是一種在共享檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。在Linux中分為軟連結(hard link)和硬連結(soft link),其中軟連結又稱為符號連結(symbolic link)。下面小編準備了linux下軟連結和硬連結的聯絡,提供給大家參考!

linux下軟連結和硬連結的聯絡

  1、索引節點:

在linux系統中對檔案的管理本質上是通過其索引節點進行管理的。從系統的角度來看,檔案的索引節點(inode)是檔案的唯一標識,它包含了檔案系統處理檔案所需要的全部資訊。詳細來說,實際上存在兩種型別的索引節點

核心索引節點(in-core indoe):儲存在記憶體中,在系統中每個開啟的檔案都對應著一個核心索引節點,

磁碟索引節點(on-disk inode):在檔案系統中的每一個檔案都有一個磁碟索引節點,儲存在磁碟上,它所儲存的具體資訊與檔案系統的型別有關。

注 意:這兩種索引節點的關係為:當程序開啟一個檔案時,檔案的磁碟索引節點中的資訊就會被載入記憶體,並建立一個核心索引節點。當核心索引節點被修改後,系統 負責將其同步到磁碟上。磁碟索引節點與對應的核心索引節點所儲存的資訊並不是完全相同的。核心索引節點記錄的是關於檔案的更通用的一些資訊,而忽略掉於具 體檔案系統型別相關的一些資訊。

  2、硬連結:

就是讓一個檔案對應一個或者多個檔名,或者說檔名和檔案系統使用的節點號連結起來,這些檔案可以在同一目錄或者不同目錄下。一個檔名對應多個檔名,稱作該檔案的連結數。例如:

ln [options] existingfile newfile

ln [options] existingfile-list directory

用法:

第一種為”existingfile”建立硬連結,檔名為”newfile”。

第二種在”directory”目錄中,為” existingfile-list”中包含的所有檔案建立一個同名的硬連結。

常用可選[options]:-f 無論”newfile”存在與否,都建立連結。-n 如果”newfile”已存在,就不建立連結。

  3、軟連結:

又稱為符號連結,實際上是一中特殊的檔案,這種檔案包含了另一個文集那的人一個路徑名。這個路徑名指向位於任意一個檔案系統的任意一個檔案,甚至可以指向一個不存在的檔案。系統會自動的把對符號連結的操作轉換為對原始檔的操作。其使用和硬連結的使用類似,

軟連結又叫符號連結,這個檔案包含了另一個檔案的路徑名。可以是任意檔案或目錄,可以連結不同檔案系統的檔案。和win下的捷徑差不多。

可以用:ln -s 命令來建立軟連結。

引用

ln -s existingfile newfile

ln -s existingfile-list directory

下面我們用一個例項來說明硬連結和軟連結。

現在目錄下有兩個檔案,一個名為AAA,一個名為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

首先先做一個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

這裡我們注意在建立連結前,AAA顯示的連結數目為1,建立連結後

和AAAhard的連結數目都變為2。

和AAAhard的inode號是一樣的,都是963922。

和AAAhard顯示的檔案大小也是一樣,都是92B。

可見進行了ln命令的操作結果:AAA和AAAhard是同一個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案AAA的硬連結,就是為 AAA的檔案索引節點在當前目錄上建立一個新指標。你可以刪除其中任何一個,如rm AAA,每次只會刪除一個指標,連結數同時減一,只有將所有指向檔案內容的指標,也即連結數減為0時,核心才會把檔案內容從磁碟上刪除。

儘管硬連結節省空間,也是Linux系統整合檔案系統的傳統方式,但是存在一些不足之處:

1.不允許給目錄建立硬連結。

2.不可以在不同檔案系統的檔案間建立連結。

接著我們做一個指向BBB的軟連結,軟連結克服了硬連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。

引用

$ 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

從上面連結後的結果可以看出來軟連結與硬連結,區別不僅僅是在概念上,在實現上也是完全不同的。

  區別:

1.硬連結原檔案/連結檔案公用一個inode號,說明他們是同一個檔案,而軟連結原檔案/連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;

2.在檔案屬性上軟連結明確寫出了是連結檔案,而硬連結沒有寫出來,因為在本質上硬連結檔案和原檔案是完全平等關係;

3.連結數目是不一樣的,軟連結的連結數目不會增加;

4.檔案大小是不一樣的,硬連結檔案顯示的大小是跟原檔案是一樣的。而這裡軟連結顯示的大小與原檔案就不同了,BBB大小是95B,而BBBsoft是3B。

總之,建立軟連結就是建立了一個新檔案。當訪問連結檔案時,系統就會發現他是個連結檔案,它讀取連結檔案找到真正要訪問的檔案。

當然軟連結也有硬連結沒有的缺點,因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了,而硬連結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

TAG標籤:下軟 連結 LINUX #