當前位置:才華齋>計算機>作業系統>

linux 硬連結和軟連結深入瞭解

作業系統 閱讀(8.24K)

在學習linux的過程中,我經常把軟硬連結,所以今天專門查了一些資料,然後整合在自己的部落格中,方便以後複習,檢視。

linux 硬連結和軟連結深入瞭解

一方面也是因為看了vamei的linux的概念與體系系列文章,感覺不全的做些補充。

軟連結相當於windows中的快捷方式。硬連結相當於一個災備系統,資料存放在兩處,與複製不同的是兩處之間存在同步機制,一處資料的改變會實時同步到另一處,另外,一處資料如果被刪除了,不會影響到另一處的資料.

詳細的介紹:

硬連線指向的是節點(inode),是已存在檔案的另一個名字,修改其中一個,與其連線的檔案同時被修改;對硬連結檔案進行讀寫和刪除操作時候,效果和軟連結相同。但如果我們刪除硬連結檔案的原始檔, 硬連結檔案仍然存在,而且保留了原有的'內容。這時,系統就“忘記”了它曾經是硬連結檔案,而把他當成一個普通檔案。 硬連結檔案有兩個限制: 1、不允許給目錄建立硬連結; 2、只有在同一檔案系統中的檔案之間才能建立連結。

軟連結指向的是路徑,又叫符號連結,這個檔案包含了另一個檔案的路徑名可以是任意檔案或目錄,還可以連結不同檔案系統的檔案,和win下的快捷方式差不多。軟連結檔案甚至可以連結不存在的檔案,這就產生一般稱之為"斷鏈"的問題(或曰“現象"),連結檔案甚至可以迴圈連結自己,類似於程式語言中的遞迴。

示例:

ln exitfile newfile

ln -s exitfile newfile

這裡的newfile為建立的連結名字,第一個沒有引數,預設是硬連結,第二個 -s 表示是軟連結。

ls -il 可以檢視檔案的inode號等屬性,例如:

[root@server tmp]# touch file

[root@server tmp]# ln file file1

[root@server tmp]# ln -s file file2

[root@server tmp]# ls -il

total 0

27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file

27127 -rw-r--r--. 2 root root 0 Nov 20 10:40 file1

27132 lrwxrwxrwx. 1 root root 4 Nov 20 10:40 file2 -> file

在 /tmp 目錄下,建立名為file的檔案,先後建立硬連結file1,軟連結file2.觀察ls -il的輸出

file 和 file1 的inode是一樣的,所以可以說硬連結是指標指向同一個inode,系統並不為他重新分配inode。file2指向file,說明file2是軟連結,inode號也發生變化,

若刪除原始檔案file,硬連結繼續使用,但軟連結就失效了。這點與win下的快捷方式類似。

這裡需要強調的是,ls -l 命令輸出中的第3個欄位內容,此為inode連結數,只要不為0,對於硬連結來說,檔案就一直存在,不管你刪的是原始檔還是之前生成的硬連結。