1.linux
鏈結概念
linux
鏈結分兩種,一種被稱為硬鏈結(
hard link
),另一種被稱為
符號鏈結(
symbolic link
)。預設情況下,
ln命令產生硬鏈結。
【硬連線】
硬連線指通過索引節點來進行連線。在
linux
的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號
(inode index)
。在linux
中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線
。file1
顯示的鏈結數目為
1,建立鏈結後
(1)file1
和file1hard
的鏈結數目都變為
2;(硬連線的作用是允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,
以防止「誤刪」
的功能。
其原因如上所述,因為對應該目錄的索引節點有乙個以上的連線。只刪除乙個連線並不影響索引節點本身和其它的連線,只有當最後乙個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案真正刪除的條件是與之相關的所有硬連線檔案均被刪除。
硬連線的2個限制:
l
不允許給目錄建立硬鏈結
l
只有在同一檔案系統中的檔案之間才能建立鏈結。即不同硬盤分割槽上的兩個檔案之間不能夠建立硬鏈結。這是因為硬鏈結是通過結點指向原始檔案的,而檔案的i-結點在不同的檔案系統中可能會不同。
【軟連線】
另外一種連線稱之為符號連線(
symbolic link
),也叫軟連線。軟鏈結檔案有類似於
windows
的快捷方式。它實際上是乙個特殊的檔案。在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。
這就允許符號鏈結(經常簡寫為symlinks)指向位於其他分割槽、甚至是其他網路硬碟上的某個檔案。
檔案屬性上軟鏈結明確寫出了是鏈結檔案,而硬鏈結沒有寫
出來。檔案大小是不一樣的,硬鏈結檔案顯示的大小是跟原
檔案是一樣的,這用強調,因為是等同的嘛,而這裡軟鏈結顯示的大小與原檔案就不同了,
file1
大小是48b
,而file1soft是5b
,這裡面的5實
際上就是
「file1」
的大小。
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 lrwxrwxrwx1 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不受影響,但是符號連線
f3檔案無效 3.
總結1).
刪除符號連線
f3,對
f1,f2
無影響;
2).刪除硬連線
f2,對
f1,f3
也無影響;
3).刪除原檔案
f1,對硬連線
f2沒有影響,導致符號連線
f3失效;
4).同時刪除原檔案
f1,硬連線
f2,整個檔案會真正的被刪除。
軟鏈結和硬鏈結
又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為 斷鏈 的問題 或曰 現象 鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。軟連線的格式是 ln s 目標檔名 鏈結名 在對符號檔案進行讀或寫操...
硬鏈結和軟鏈結
在linux中除了程序之外都是檔案,目錄是特殊的檔案,目錄記錄了其他檔案的檔名。linux檔案被分為兩部分 元資料 檔案的屬性資料 和使用者資料 實際的資料 在linux中通過檔名開啟檔案。檢視檔案的inode號可以使用stat或者ls i命令。軟連線和硬鏈結 硬鏈結是兩個檔名指向同乙個inode,...
硬鏈結和軟鏈結
必須在乙個分割槽,兩個檔案互為源,命硬,刪掉乙個還有乙個。多個檔案共享乙個inode 是為了節省 inode 資源。這多個檔案的內容是同步的。root foundation4 cd home kiosk desktop root foundation4 desktop touch file root...