天天看點

硬連結和連結(符号連結)

連結的指令: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來說的