首先要弄清楚,在{
tagshow(event)
}">Linux{
tagshow(event)
}">系統中,核心為每一個新建立的{
tagshow(event)
}">檔案分配一個Inode(索引結點),每個檔案都有一個惟一的inode號。檔案屬性儲存在索引結點裡,在訪問檔案時,索引結點被複製到{
tagshow(event)
}">記憶體在,從而實現檔案的快速存取。
連結是一種在共用檔案和訪問它的使用者的若干目錄項之間建立聯絡的一種方法。Linux中包括兩種連結:永久連結(Hard Link)和軟連結(Soft Link),軟連結又稱為符號連結(Symbolic link)。
下面舉一些例子:
$ ls –il
13058 -rwx - - - - - - 1 longcheng longcheng 48 8月 5 16:38 file1
13059 -rwx - - - - - - 1 longcheng longcheng 57 8月 5 16:40 file2
$ 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
建立軟連結,只要在ln後面加上選項 –s,下面舉個例子
$ 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
$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
軟連結也有永久連結沒有的缺點,因為連結檔案包含有原檔案的路徑資訊,所以當原檔案從一個目錄下移到其他目錄中,再訪問連結檔案,系統就找不到了,而永久連結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。
再舉一個例子來說明一下:
假設有檔案src,hl是它的一個hardlink,那麼會建立一個檔案索引,和src使用同一個i-node,當src被刪除之後,仍然可以通過hl來訪問檔案內容。實際上當hl已經建立了以後,hl和src完全是等同的,你甚至可以說src是hl的一個hardlink。
建立一個src的symbol link,名字是sl,那麼sl只是一個特殊的檔案,裡面記錄了src的檔案名稱和路徑(具體內容取決於執行ln命令的參數)。sl有自己的i-node。當src被刪除的時候,sl就失效了。