Linux 系統下每建立一個檔案,系統都會為此檔案產生一個 index node 簡稱(inode) ,而每一個檔案都包含使用者資料(user data) 與 中繼資料(metadata)
使用者資料裡記錄了檔案的真正內容.
中繼資料裡記錄的是檔案的附加屬性,如 檔案大小,建立時間,所有者等,其中 上面提到的 index node 就儲存在中繼資料中.在linux 中檔案名稱並不是檔案的唯一標識,index onde 才是唯一標示,系統尋找檔案也是通過 index node 來尋找內容資料區塊.
如何查看檔案的 index node:
代碼如下:
/Users/zhangzhi >ls -i
31615656 AndroidStudioProjects 30836545 go
1152719 Applications 49115578 images
31827389 CNode 13208576 ktsgs.zip
595399 Desktop 44722768 pandoc_demo
595275 Documents 49218456 pgadmin.log
595277 Downloads 15078624 pomelo
7094352 LevelTest 1009499 project
7098493 LevelTest.zip 1011801 qdb
595388 Library 5901898 qdb.zip
595439 Movies 23150187 test
595441 Music 1010768 tmp
595443 Pictures 17956310 trunk
595445 Public 17970255 trunk.zip
32072972 app 41999857 webwork
1009500 code 13208610 遊戲配置
22509232 databak
我們看到的前面的數字序列就是 index node
如何理解呢,你可以想象成 windows 作業系統裡的快速鍵.對同一個檔案的訪問提供了多個入口.
指令:
ln [option] link_file source_file
(link_file是待建立連結檔案的檔案,source_file是新建立的連結檔案)
-f 建立時,將同檔案名刪除.
-i 刪除前進行詢問.
樣本:
代碼如下:
ln -s myfile mylink
建立myfile 檔案的軟連結 mylink
代碼如下:
ln myfile mylink
建立myfile 的永久連結 mylink
軟連結
ln -s myfile mylink
軟連結建立後,使用者資料中儲存的並不是檔案本身的記錄,而是一個指向 原檔案路徑的一個指標.但是它有自己的 index node 序列.
所以 ,軟連結其實就是一個新的檔案,但是這個檔案很特殊,因為他的使用者資料中放的不是檔案內容,而是一個指向其他檔案的指標.
軟連結有下面幾個特點:
1.多個軟連結有多個不同的 index node
2.不僅可以對檔案建立,還可以對目錄建立軟連結
3.軟連結可以交叉檔案系統
4.刪除軟連結 並不會影響原檔案,但是原檔案被刪除,這個軟連結就成了一個死連結.
永久連結
ln myfile mylink
永久連結建立後,使用者資料中儲存的是檔案本身記錄,其他他的使用者資料和中繼資料都和 myfile 一樣,唯一不同的是檔案名稱.
所以永久連結就是同一個檔案有了多個檔案名稱, 但是多個檔案名稱都指向了 同一個 index node
這樣看來,永久連結就是有多個別名的同一個檔案.
永久連結有下面幾個特別:
1.他們有相同的 index node
2.有相同的資料記錄
3.只能在已經存在檔案上建立 永久連結
4.刪除其中任何一個,其他永久連結不受影響.
5.只能對檔案做永久連結