連結的指令:ln - make links between files #在檔案之間建立一個連結
建立硬連結會增加額外的記錄項以引用檔案
圖中的1為連結數=檔案的名字數量
将/mnt/f1做一個硬連結到/opt/f1 取名還叫f1
圖中,倆個檔案的中繼資料一樣說明是同一個檔案
連結次數都是2
然後把源檔案改名并添加内容
這裡可以看到,它們的中繼資料還是一樣的,說明還是同一個檔案,然後我們
檢視它們的内容是不是一樣
結果顯而易見
那麼,當我們删除源檔案時,連結檔案會不會也無效或被删呢?
連結檔案還在,内容也沒有丢失。但連結數量減1
當連結數量為0時。檔案被删除
對應于同一檔案系統上一個實體檔案
每個目錄引用相同的inode号
建立時連結數遞增
硬連結不能跨驅動器或分區
示範
下圖,/testdir目錄是sda5分區與/opt不是同一個分區
然後我們将f1連結到/testdir目錄下
提示不能跨分區連結。為什麼?
硬連結的本質是同一個檔案,給它增加一個新的名字,若不在一個分區裡,即使中繼資料一樣也不是同一個檔案,是以這個違反了硬連結的定義,是以系統不會讓你建立
硬連結不能給目錄建立連結
符号(或軟)連結
一個符号連結指向另一個檔案
ls- l的 顯示連結的名稱和引用的檔案
一個符号連結的内容是它引用檔案的名
可以對目錄進行
可以跨分區
不增加或減少目标檔案inode的引用計數;
文法: ln -s filename [linkname]
軟連接配接f1起名f11檢視屬性。中繼資料不一樣;讀寫權限不一樣;連結數也沒有增加;資料大小也不一樣。2這個資料是怎麼來的呢?是從路徑,路徑有幾個字元就是幾
是以軟連接配接與原始檔案不是同一個檔案。
當我們把原始檔案删除以後,連結檔案就會報錯
連結檔案裡存放的是路徑資料,當我們通路連結檔案時,它會自動的轉到原始檔案那裡,是以當我們把原始檔案删除以後,它過去一找,哎!沒有了?是以它就會告訴我們:我找不到!
這裡有個很有意思的事:我們在原目錄下用vi編輯器建立一個全新的f1,看看它能不能差別出來。
OK,這個f1是以前f1的弟弟!
系統果然沒有認出來,它隻是機械式的給我們一個連結,才不會care到底以前的f1還是不是f1。隻要名字一樣,是它知道的那個地方就行。
接下來就是驗證跨分區、跨裝置操作
報錯了。為什麼呢?
因為它找不到。路徑不對,
指令:ln –s f1 /testdir/f2
f1的路徑應該是相對于/testdir/f2
是以路徑應該寫:/opt/f1
這裡的f22就對了。沒有報錯
還有一種情況當軟連接配接在它的子目錄下時可以用另一種方式寫
上圖:pig1和dog1都在testdir目錄下
我們将/testdir/dog/dog1/a檔案軟連接配接到/testdir/pig/pig1/a1起名叫a1(實在不知道起什麼檔案名好,大家别賤笑)
這裡,軟連接配接a1必須寫絕對路徑,而源檔案可以寫相對路徑,這裡的相對路徑是相對軟連接配接a1來說的