unix系統當中 軟連線與硬連線的區別(轉)

ba發表於2007-08-16
unix系統當中 軟連線與硬連線的區別(轉)[@more@]以前一直不明白unix系統當中硬連線與軟連線的區別,閒暇無聊時候想鍛鍊看些英文的計算機資料,忽然有點心得體會。

要講清楚這兩個的區別,首先要明白unix系統當中檔案的儲存。unix檔案當中檔案的儲存可以分為三部分:

1、 檔名 file name;

2、 我們稱之為inode, 裡面儲存了此檔案的屬性,包括檔案大小、所有者、以及訪問許可權等等。

3、 資料塊 DATA;

以一個例子講:

目標檔名稱 /opt/public.c 要建立的軟連線的名稱為a , 建立的硬連線的名稱為b。

此時/opt/public.c 檔案的儲存為: 1、檔名稱 public.c 2、inode 為1233

3、資料塊為檔案的資料塊。

那此時軟連線a的儲存為: 1、 檔名稱:a 2、inode為 1423(系統分配值) 3、資料塊資料為:/opt/public.c

而硬連線b的儲存為: 1、 檔名稱:b 2、inode為1233 3、資料塊為檔案的資料塊。

從上面我們知道軟連線 有自己的inode 和資料塊,他的資料塊當中的內容為所要連線的檔案的絕對或者相對路徑。而硬連線和他所要連線的檔案共有同一個inode 和資料塊。

這兩個連線不同之處主要體現在訪問許可權上,建立的軟連線的訪問許可權是777,但是這不是他的實際訪問許可權,他的實際訪問許可權還是以它所連線的檔案的訪問許可權為準。而硬連線建立的時候的訪問許可權就是它所連線的訪問許可權,因為他們共用一個inode,而inode當中所儲存的就是此檔案的訪問許可權。

需要補充的是,軟連線可以跨檔案系統,而硬連線不能跨檔案系統。


看一個檔案或者目錄的硬連線數量可用ls -al

drwxr-xr-x 10 jlivr other 512 Jun 9 16:23 .
drwxrwxr-x 13 root sys 512 Apr 11 15:17 ..
-rw------- 1 jlivr other 3442 Jun 9 16:21 .bash_history
-rw-r--r-- 1 jlivr other 1039 May 11 17:04 .profile
drwxr-xr-x 2 jlivr other 512 Apr 26 15:58 bin
drwxr-xr-x 3 jlivr other 1024 Apr 26 15:51 inc
drwxr-xr-x 2 jlivr other 512 Apr 26 15:51 lib
drwxr-xr-x 8 jlivr other 512 Jun 6 17:18 mex
drwxr-xr-x 2 jlivr other 1024 May 20 12:21 new_voice
drwxr-xr-x 2 jlivr other 512 May 23 01:06 obj


訪問許可權與檔案所有者當中有個數字, 代表的就是此檔案或者目錄的硬連線數量。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-961204/,如需轉載,請註明出處,否則將追究法律責任。

相關文章