Linux 系統中有軟串連和永久連結兩種特殊的“檔案”。
其中軟串連實際上可以看作是Windows中的捷徑,而永久連結則可以看作類似於一個檔案的 “指標”(也不完全相同) 。
建立方法都很簡單:
- 軟串連(符號連結) ln -s source target
- 永久連結 ln source target
原理:
要解釋清楚兩者的區別和聯絡需要先說清楚 linux 檔案系統中的 inode 這個東西。
簡單的說這個inode即使檔案在一個檔案系統中的唯一標識,需要訪問這個檔案的時候必須先找到並讀取這個檔案的 inode。 Inode 裡面儲存了檔案的很多重要參數,其中唯一標識稱作 inumber, 其他資訊還有建立時間(ctime)、修改時間(mtime) 、檔案大小、屬主、歸屬的使用者組、讀寫權限等資訊。
當劃分磁碟分割並格式化的時候,整個分區會被劃分為兩個部分,即inode區和資料區域
通常會根據分區的用途來安排inode的數量(這是另外一個話題了),比如檔案數量很多而檔案都很小,則需要調增inode較大,以便能索引全部檔案。否則將會出現這個分區並沒有寫滿而無法寫入任何檔案的情況。
查看 inodes 使用方式的命令 df -i :
知道了inode的作用就不難理解軟永久連結的區別了。
- 軟串連相當於捷徑,如果開啟並修改軟串連,相應的檔案也會隨之改變。但是如果刪除軟串連,源檔案並不會受到影響。
- 永久連結有點像引用和指標的結合,當開啟和修改它時,相應的檔案隨之改變,但是所有這個檔案的永久連結的內容也隨之改變,這是因為所有的永久連結都擁有唯一的一個 inode 號,他們指向的是同一檔案。
- 軟串連可以跨檔案系統建立,也就是可以在某個分區中建立到另外一個分區的軟串連
- 永久連結則只能在本檔案系統中使用(想想為什嗎?),其實原理很簡單,因為 inode 是這個檔案在當前分區中的索引值,是相對於這個分區的,當然不能跨越檔案系統了。
- 最後一個區別是軟串連可以串連任何檔案或者檔案夾,而永久連結則只能在檔案之間建立
轉