在linux系統中,核心為每乙個新建立的檔案分配乙個inode(索引結點),每個檔案都有乙個惟一的inode號,檔案屬性儲存在索引結點裡。
一、硬鏈結
硬鏈結是指向檔案索引節點的乙個指標,系統並不為它重新分配inode。可以用:ln命令來建立硬鏈結。
1、ln [options] file newfile 為」existingfile」建立硬鏈結,檔名為」newfile」。
2、ln[options] file-list directory 在」directory」目錄中,為 」file-list」中包含的所有檔案建立乙個同名的硬鏈結。常用可選[options] –f 無論」newfile」存在與否,都建立鏈結。-n 如果」newfile」已存在,就不建立鏈結。
舉例如下:
$ ls -il
431516 -rw-r--r-- 1 farsight farsight 489 2011-08-17 23:50 a.c
431504 -rw-r--r-- 1 farsight farsight 356 2011-08-18 01:19 b.c
$ ln a.c newa.c
$ ls -il
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 a.c
431504 -rw-r--r-- 1 farsight farsight 356 2011-08-18 01:19 b.c
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 newa.c
(1)a.c和newa.c的鏈結數目都變為2;
(2)a.c和newa.c的inode號是一樣的
(3) file1和file1hard顯示的檔案大小也是一樣。
可見進行了ln命令的操作結果:a.c和newa.c是同乙個檔案的兩個名字,它們具有同樣的索引節點號和檔案屬性,建立檔案a.c的硬鏈結,就是為a.c的檔案索引節點在當前目錄上建立乙個新指標。
不可以在不同檔案系統的檔案間建立鏈結。必須要有一種方法解決這個問題,這就有了軟鏈結,或者叫符號鏈結。
二、軟鏈結(符號鏈結)
軟鏈結克服了硬鏈結的不足,沒有任何檔案系統的限制,任何使用者可以建立指向目錄的符號鏈結。因而現在更為廣泛使用,它具有更大的靈活性,甚至可以跨越不同機器、不同網路對檔案進行鏈結。
$ ls -il
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 a.c
431504 -rw-r--r-- 1 farsight farsight 356 2011-08-18 01:19 b.c
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 newa.c
$ ln -s a.c snewa.c
$ ls -il
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 a.c
431504 -rw-r--r-- 1 farsight farsight 356 2011-08-18 01:19 b.c
431516 -rw-r--r-- 2 farsight farsight 489 2011-08-17 23:50 newa.c
427189 lrwxrwxrwx 1 farsight farsight 3 2011-11-23 19:02 snewa.c -> a.c
從上面的例子可以看到:硬鏈結中原檔案和鏈結檔案共用乙個inode號,說明他們是同乙個檔案,而軟鏈結中原檔案和鏈結檔案擁有不同的inode號,表明他們是兩個不同的檔案;在檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫出來,因為在本質上硬鏈結檔案和原檔案是完全平等關係;鏈結數目是不一樣的,軟鏈結的鏈結數目不會增加;檔案大小是不一樣的,硬鏈結檔案顯示的大小是跟原檔案是一樣的,而軟鏈結顯示的大小與原檔案就不同了,file1大小是489,而file1soft是3。
總之,建立軟鏈結就是建立了乙個新檔案。當訪問鏈結檔案時,系統就會發現他是個鏈結檔案,它讀取鏈結檔案找到真正要訪問的檔案。
當然軟鏈結也有硬鏈結沒有的缺點,因為鏈結檔案包含有原檔案的路徑資訊,所以當原檔案從乙個目錄下移到其他目錄中,再訪問鏈結檔案,系統就找不到 了,而硬鏈結就沒有這個缺陷,你想怎麼移就怎麼移;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。
linux硬鏈結與軟連線
linux通過鏈結來為檔案向使用者程式提供多個入口,linux鏈結有兩種 一種稱為硬鏈結 hard link 另一種稱為符號鏈結 symbolic link 也常被稱為軟鏈結,預設情況下,命令產生硬鏈結。硬鏈結通過索引節點 inode 進行鏈結,這樣多個檔名指向同乙個索引節點,也就使得乙個檔案可以擁...
Linux 軟連線與硬鏈結
檔案都有檔名與資料,這在 linux 上被分成兩個部分 使用者資料 user data 與元資料 metadata 使用者資料,即檔案資料塊 data block 資料塊是記錄檔案真實內容的地方 而元資料則是檔案的附加屬性,如檔案大小 建立時間 所有者等資訊。在 linux 中,元資料中的 inod...
Linux硬鏈結與軟連線
linux檔案包含兩部分資料,使用者資料和元資料,期中使用者資料存放的就是檔案的儲存內容,元資料儲存的即是檔案的屬性,所有者,許可權,建立時間,還有乙個最重要的就是inode號.在linux系統中,真正區分乙個檔案的是這個檔案的inode號而非檔名,並且多個檔名對應乙個inode號也是很常見的,因此...