1. 程式人生 > >linux下的符號連結檔案

linux下的符號連結檔案

連結有兩種,一種被稱為硬連結(Hard Link),另一種被稱為符號連結(Symbolic Link,也叫做軟連結)。預設情況下,ln命令產生硬連結。
(一)硬連結
1.產生硬連結的語法

ln 原始檔 目標檔案 (注意:不能為目錄建立硬連結)

2.關於inode
inode 譯成中文就是索引節點。每個儲存裝置或儲存裝置的分割槽(儲存裝置是硬碟、軟盤、U盤 … … )被格式化為檔案系統後,應該有兩部份,一部份是inode,另一部份是Block,Block是用來儲存資料用的。而inode呢,就是用來儲存這些資料的資訊,這些資訊包括檔案大小、屬主、歸屬的使用者組、讀寫許可權等。inode為每個檔案進行資訊索引,所以就有了inode的數值。作業系統根據指令,能通過inode值最快的找到相對應的檔案。
硬連線指通過索引節點來進行的連線。在Linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配一個編號,稱為索引節點號(Inode Index)。在Linux中,多個檔名指向同一索引節點是存在的。一般這種連線就是硬連線。硬連線的作用是允許一個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止“誤刪”的功能。其原因如上所述,因為對應該目錄的索引節點有一個以上的連線。只刪除一個連線並不影響索引節點本身和其它的連線,只有當最後一個連線被刪除後,檔案的資料塊及目錄的連線才會被釋放。也就是說,檔案才會被真正刪除。
3.inode相同的檔案是硬連結檔案
在Linux 檔案系統中,inode值相同的檔案是硬連結檔案,也就是說,不同的檔名,inode可能是相同的,一個inode值可以對應多個檔案。
inode值相同的檔案,他們的關係是互為硬連結的關係。當我們修改其中一個檔案的內容時,互為硬連結的檔案的內容也會跟著變化。如果我們刪除互為硬連結關係的某個檔案時,其它的檔案並不受影響。
(二)軟連結(符號連結)
與硬連線相對應,Lnux系統中還存在另一種連線,稱為符號連線(Symbilc Link),也叫軟連線。軟連結檔案有點類似於Windows的快捷方式。它實際上是特殊檔案的一種。在符號連線中,檔案實際上是一個文字檔案,其中包含的有另一檔案的位置資訊。
1.產生軟連結的語法
# ln -s 原始檔或目錄 目標檔案或目錄
2.關於軟連結
軟連結也叫符號連結,它和硬連結有所不同,軟連結檔案只是其原始檔的一個標記。當我們刪除了原始檔後,連結檔案不能獨立存在,雖然仍保留檔名,但我們卻不能檢視軟連結檔案的內容了。
值得我們注意的是:當我們修改連結檔案的內容時,就意味著我們在修改原始檔的內容。當然原始檔的屬性也會發生改變,連結檔案的屬性並不會發生變化。當我們把原始檔刪除後,連結檔案只存在一個檔名,因為失去了原始檔,所以軟連結檔案也就不存在了。這一點和硬連結是不同的;
(三)示例
touch f1(建立一個f1的檔案)
ln f1 f2 創佳一個f2的硬連線
ln -s f1 f3 建立一個f3的軟連線
此時如果刪除f3,對f1,f2無影響;如果刪除f2,對f1,f3也無影響,如果刪除f1,那麼因為f2也應用f1,所以並不影響f2節點的,touch 建立的檔案仍然存在;但是此時f3因為是軟連線,導致f3失效。如果刪除f1,f2 ,那麼touch 創佳的檔案會被刪除