【ln 建立串連檔】前面提到過兩次串連檔的概念,現在終於該好好介紹下這部分內容了。串連檔分為兩種,硬串連(hard link)和軟串連(symbolic link)。Hard Links: 上面內容中說過,當系統要讀取一個檔案時,就會先去讀inode table,然後再去根據inode中的資訊到塊地區去將資料取出來。而hard link 是直接再建立一個inode串連到檔案放置的塊地區。也就是說,進行hard link的時候實際上該檔案內容沒有任何變化,只是增加了一個指到這個檔案的inode,不過這樣一來就會有個問題,因為增加的inode會串連到塊地區,而目錄本身僅僅消耗inode而已,那麼hard link就不能串連目錄了。請你記住,hard link 有兩個限制:1 不能跨檔案系統,因為不通的檔案系統有不同的inode table; 2 不能串連目錄。
www.2cto.com Symbolic Links:跟hard link不同,這個是建立一個獨立的檔案,而這個檔案的作用是當讀取這個串連檔案時,它會把讀取的行為轉寄到該檔案所link的檔案上。這樣講,也許比較繞口,那麼就來舉一個例子。現在有檔案a,我們做了一個軟串連檔案b(只是一個串連檔案,非常小),b指向了檔案a。當讀取b時,那麼b就會把讀取的動作轉寄到a上,這樣就讀取到了檔案a。所以,當你刪除檔案a時,檔案b並不會被刪除,但是再讀取b時,會提示無法開啟檔案。而,當你刪除b時,a是不會有任何影響的。
看樣子,似乎 hard link 比較安全,因為即使某一個 inode 被殺掉了,只要有任何一個 inode 存在,那麼該檔案就不會不見!不過,不幸的是,由於 Hard Link 的限制太多了,包括無法做目錄的 link ,所以在用途上面是比較受限的!反而是 Symbolic Link 的使用方向較廣!那麼如何建立軟串連和硬串連呢?這就用到了ln 命令。ln 文法: ln [-s] [來源檔案] [目的檔案]ln 常用的選項就一個-s ,如果不加就是建立硬串連,加上就建立軟串連。
www.2cto.com 在建立硬串連前後,123目錄所佔空間大小並沒有改變。當把源檔案刪除後,空間仍舊沒有變化。說明了刪除一個檔案其實只是刪除了inode資訊。不能建立目錄的硬串連。建立軟串連後,456目錄增加了4k刪除源檔案後會提示“沒有這個檔案”的錯誤。目錄是可以軟串連的。
www.2cto.com 刪除軟串連對源檔案沒有任何影響。