Linux連線 硬鏈結 軟連線

2021-10-21 19:44:51 字數 2036 閱讀 6248

1.linux 鏈結概念

linux 鏈結分兩種,一種被稱為硬鏈結(hard link),另一種被稱為符號鏈結(symbolic link)。預設情況下,ln 命令產生硬鏈結。

硬連線硬連線指通過索引節點來進行連線。在 linux 的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。在 linux 中,多個檔名指向同一索引節點是存在的。比如:a 是 b 的硬鏈結(a 和 b 都是檔名),則 a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號相同,即乙個 inode 節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a 和 b 對檔案系統來說是完全平等的。刪除其中任何乙個都不會影響另外乙個的訪問。

硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

軟連線另外一種連線稱之為符號連線(symbolic link),也叫軟連線。軟鏈結檔案有類似於 windows 的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。比如:a 是 b 的軟鏈結(a 和 b 都是檔名),a 的目錄項中的 inode 節點號與 b 的目錄項中的 inode 節點號不相同,a 和 b 指向的是兩個不同的 inode,繼而指向兩塊不同的資料塊。但是a 的資料塊中存放的只是 b 的路徑名(可以根據這個找到 b 的目錄項)。a 和 b 之間是「主從」關係,如果 b 被刪除了,a 仍然存在(因為兩個是不同的檔案),但指向的是乙個無效的鏈結。

2.通過實驗加深理解

[oracle@linux]$ touch f1          #建立乙個測試檔案f1

[oracle@linux]$ ln f1 f2 #建立f1的乙個硬連線檔案f2

[oracle@linux]$ ln -s f1 f3 #建立f1的乙個符號連線檔案f3

[oracle@linux]$ ls -li # -i引數顯示檔案的inode節點資訊

total 0

9797648 -rw-r--r-- 2 oracle oinstall 0 apr 21 08:11 f1

9797648 -rw-r--r-- 2 oracle oinstall 0 apr 21 08:11 f2

9797649 lrwxrwxrwx 1 oracle oinstall 2 apr 21 08:11 f3 -> f1

從上面的結果中可以看出,硬連線檔案 f2 與原檔案 f1 的 inode 節點相同,均為 9797648,然而符號連線檔案的 inode 節點不同。

[oracle@linux]$ echo

"i am f1 file"

>>f1

[oracle@linux]$ cat f1

i am f1 file

[oracle@linux]$ cat f2

i am f1 file

[oracle@linux]$ cat f3

i am f1 file

[oracle@linux]$ rm -f f1

[oracle@linux]$ cat f2

i am f1 file

[oracle@linux]$ cat f3

cat: f3: no such file or directory

通過上面的測試可以看出:當刪除原始檔案 f1 後,硬連線 f2 不受影響,但是符號連線 f1 檔案無效

1).刪除符號連線f3,對f1,f2無影響;

2).刪除硬連線f2,對f1,f3也無影響;

3).刪除原檔案f1,對硬連線f2沒有影響,導致符號連線f3失效;

4).同時刪除原檔案f1,硬連線f2,整個檔案會真正的被刪除。

Linux 硬鏈結 軟連線

情景說明 有時候在linux下我們有乙個大的工程跟絕對路徑相關,現在又想通過eclipse檢視原始碼和修改原始碼,那麼問題來了 1.如果我們把原始碼拷貝乙份到eclipse工程裡面,那麼此時修改了某個檔案之後還得手動複製到可以執行的原始工程目錄下,這樣操作很麻煩。2.如果直接重新把原始碼部署在ecl...

軟連線 硬鏈結

一 linux系統中乙個檔案由目錄項 inode表和資料塊組成。1 首先根據檔名,找到我們目錄項中的inode號。2 通過inode號進入我們inode表中,查詢到該檔案中一些資訊。3 然後通過inode表中的儲存的資料區的指標,讀取我們相應資料區的內容。二 硬鏈結 本質 是給我們的檔案取別名。與原...

linux軟連線和硬鏈結

一 鏈結檔案 鏈結有兩種方式,軟鏈結和硬鏈結。1 軟鏈結檔案 軟鏈結又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為 斷鏈 的問題 或曰 現象 鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。...