標籤:
連結:一種在共用檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。
Linux中包括兩種連結:永久連結(Hard Link)和軟連結(Soft Link),軟連結又稱為符號連結(Symbolic link)。
我們首先來瞭解一下幾個名詞:
索引節點(inode)
要瞭解連結,我們首先得瞭解一個概念,叫索引節點(inode)。在Linux系統中,核心為每一個新建立的檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號,我們可以將inode簡單理解成一個指標,它永遠指向本檔案的具體儲存位置。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到記憶體在,從而實現檔案的快速存取。系統是通過索引節點(而不是檔案名稱)來定位每一個檔案。
永久連結(Hard Link)
永久連結說白了是一個指標,指向檔案索引節點,系統並不為它重新分配inode。可以用:ln命令來建立永久連結。
引用
ln [options] existingfile newfile
ln [options] existingfile-list directory
用法:
第一種為”existingfile”建立永久連結,檔案名稱為”newfile”。
第二種在”directory”目錄中,為” existingfile-list”中包含的所有檔案建立一個同名的永久連結。
常用可選[options]:-f 無論”newfile”存在與否,都建立連結。-n 如果”newfile”已存在,就不建立連結。
軟連結(Soft Link)
軟連結又叫符號連結,這個檔案包含了另一個檔案的路徑名。可以是任意檔案或目錄,可以連結不同檔案系統的檔案。和win下的捷徑差不多。
可以用:ln -s 命令來建立軟連結。
引用
ln -s existingfile newfile
ln -s existingfile-list directory
下面我們用一個執行個體來說明永久連結和軟連結。
現在目錄下有兩個檔案,一個名為file1,一個名為file2。
引用
$ ls –il
1052671 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2007-03-29 13:46 file2
首先先做一個file1的永久連結。
引用
$ ln file1 file1hard
$ls –il
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:46 file12
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:46 file1hard
這裡我們注意在建立連結前,file1顯示的連結數目為1,建立連結後
1.file1和file1hard的連結數目都變為2。
2.file1和file1的inode號是一樣的,都是1052671。
3.file1和file1hard顯示的檔案大小也是一樣,都是0B。
可見進行了ln命令的操作結果:file1和file1hard是同一個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案file1的永久連結,就是為 file1的檔案索引節點在目前的目錄上建立一個新指標。你可以刪除其中任何一個,如rm file1,每次只會刪除一個指標,連結數同時減一,只有將所有指向檔案內容的指標,也即連結數減為0時,核心才會把檔案內容從磁碟上刪除。
儘管永久連結節省空間的,也是Linux系統整合檔案系統的傳統方式,但是存在一些不足之處:
1.不允許給目錄建立永久連結。
2.不可以在不同檔案系統的檔案間建立連結。
接著我們做一個指向file2的軟連結,軟連結克服了永久連結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號連結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行連結。
引用
$ ln -s file2 file2soft
$ ls –il
總用量 0
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1
1052670 -rw-r--r-- 1 Leanx Leanx 0 2010-03-29 13:35 file2
1053313 lrwxrwxrwx 1 Leanx Leanx 5 2010-03-29 13:45 file2soft -> file2
1052671 -rw-r--r-- 2 Leanx Leanx 0 2010-03-29 13:34 file1hard
從上面連結後的結果可以看出來軟連結與永久連結,區別不僅僅是在概念上,在實現上也是完全不同的。
區別:
1.永久連結原檔案/連結檔案公用一個inode號,說明他們是同一個檔案,而軟連結原檔案/連結檔案擁有不同的inode號,表明他們是兩個不同的檔案;
2.在檔案屬性上軟連結明確寫出了是連結檔案,而永久連結沒有寫出來,因為在本質上永久連結檔案和原檔案是完全平等關係;
3.連結數目是不一樣的,軟連結的連結數目不會增加;
4.檔案大小是不一樣的,永久連結檔案顯示的大小是跟原檔案是一樣的。而這裡軟連結顯示的大小與原檔案就不同了,file2大小是0B,而file2soft是5B。
總之,建立軟連結就是建立了一個新檔案。當訪問連結檔案時,系統就會發現他是個連結檔案,它讀取連結檔案找到真正要訪問的檔案。
當然軟連結也有永久連結沒有的缺點,因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了,而永久連結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。
轉: linux檔案連結(軟連結和永久連結)