軟鏈結和硬鏈結的區別

2021-10-06 02:44:43 字數 1696 閱讀 7708

1.linux鏈結概念

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

【硬連線】

硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。在linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止「誤刪」的功能。其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。

【軟連線】

另外一種連線稱之為符號連線(symbolic link),也叫軟連線。軟鏈結檔案有類似於windows的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。

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檔案無效

3.總結

依此您可以做一些相關的測試,可以得到以下全部結論:

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

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

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

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

硬鏈結和原檔案是一樣的inode號,軟鏈結和原檔案是不同的inode號。

軟鏈結和硬鏈結的區別

1 從儲存資源的角度 軟鏈結新建了乙個檔案,這個檔案和被鏈結的原始檔大小不同,只是記錄了被指向的檔案的路徑資訊 2 從系統管理的角度 硬鏈結通過索引節點來進行連線,乙個索引節點被多個檔名同時指向時,都是硬鏈結的方式 軟鏈結由於是通過建立新檔案的方式,所以指向的是不同的索引節點,通過新檔案儲存的路徑資...

硬鏈結和軟鏈結的區別

1.原理上 硬鏈結 hard link 檔案a是檔案b的硬鏈結,則a的目錄項中的inode節點號與b的目錄項中的inode節點號相同,即乙個inode節點對應兩個不同的檔名,兩個檔名指向同乙個檔案,a和b對檔案系統來說是完全平等的。如果刪除了其中乙個,對另外乙個沒有影響。每增加乙個檔名,inode節...

「軟鏈結」和「硬鏈結」的區別

鏈結簡單說實際上是一種檔案共享的方式,是 posix 中的概念,主流檔案系統都支援鏈結檔案。你可以將鏈結簡單地理解為 windows 中常見的快捷方式 或是 os x 中的替身 linux 中常用它來解決一些庫版本的問題,通常也會將一些目錄層次較深的檔案鏈結到乙個更易訪問的目錄中。在這些用途上,我們...