linux軟鏈結和硬鏈結

2022-08-18 00:57:12 字數 3470 閱讀 7647

簡而言之:

軟鏈結相當於windows中的快捷方式

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

下面是詳細的介紹:

存在兩種不同型別的鏈結,軟鏈結和硬鏈結。修改其中乙個,硬連線指向的是節點(inode),而軟連線指向的是路徑(path)

軟鏈結檔案

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

命令格式:

**: ln [-s] source_path target_path 硬鏈結檔案

info ln 命令告訴您,硬鏈結是已存在檔案的另乙個名字,硬連線的命令是:

**: ln -d existfile newfile   //如果不加任何引數,預設情況下是硬鏈結.

硬鏈結檔案

硬鏈結檔案有兩個限制:

1、不允許給目錄建立硬鏈結;

2、只有在同一檔案系統中的檔案之間才能建立鏈結。

對硬鏈結檔案進行讀寫和刪除操作時候,結果和軟鏈結相同。但如果我們刪除硬鏈結檔案的原始檔,硬鏈結檔案仍然存在,而且保留了原有的內容。這時,系統就「忘記」了它曾經是硬鏈結檔案。而把他當成乙個普通檔案。修改其中乙個,與其連線的檔案同時被修

改.**:

$ ln httpd.conf httpd1.conf (硬鏈結)

(軟鏈結)

第一條為硬鏈結,第二條為軟鏈結

**:

$ ls -li   //檢視乙個檔案或目錄的inode,要通過ls 命令的的 -i引數,inode值相同的檔案,他們的關係是互為硬鏈結的關係

**:

總用量 80

1077669-rw-r--r--     2

sam       adm          34890

10月 31 00:57 httpd1.conf (連線數變為2)

1077668   lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf -> httpd.conf (類似於win快捷方式)

1077669

-rw-r--r--     2

sam       adm          34890

10月 31 00:57 httpd.conf

(連線數變為

2)可以看到,使用ls -li,軟連線只產生了10位元組的快捷而已,硬連線卻實實在在的的拷貝。最前面的inode硬鏈結和原始檔是一樣的

,而軟鏈結不一樣.對http1.conf進行編輯,可以發現httpd.conf也發生了一樣的變化.

現在刪除鏈結的原始檔,來比較不同之處

**:

$ ls -l

總用量 44

drw-r--r--     2 sam       adm           4096 10月 30 20:14 file6

-rw-r--r--     1 sam       adm          34890 10月 31 00:57 httpd1.conf

lrwxrwxrwx     1 sam       adm             10 10月 31 00:58 httpd2.conf -> httpd.conf

發現,httpd2.conf實際已經不存在了,是斷鏈,而httpd1.conf變也了普通檔案.

詳細示例分析(截圖):

一 鏈結檔案

鏈結有兩種方式,軟鏈結和硬鏈結。

1 軟鏈結檔案

軟鏈結又叫符號鏈結,這個檔案包含了另乙個檔案的路徑名。可以是任意檔案或目錄,可以鏈結不同檔案系統的檔案。

鏈結檔案甚至可以鏈結不存在的檔案,這就產生一般稱之為"斷鏈"的問題(或曰「現象"),鏈結檔案甚至可以迴圈鏈結自己。類似於程式語言中的遞迴。

用ln -s 命令可以生成乙個軟連線,如下:

[root@linux236 test]# ln -s  source_file softlink_file

在對符號檔案進行讀或寫操作的時候,系統會自動把該操作轉換為對原始檔的操作,但刪除鏈結檔案時,系統僅僅刪除鏈結檔案,而不刪除原始檔本身。

2 硬鏈結檔案

info ln 命令告訴您,硬鏈結是已存在檔案的另乙個名字(a "hard link" is another name for an existing file),這多少有些令人困惑。硬連線的命令是

ln -d existfile newfile

硬鏈結檔案有兩個限制

1)、不允許給目錄建立硬鏈結;

2)、只有在同一檔案系統中的檔案之間才能建立鏈結。

對硬鏈結檔案進行讀寫和刪除操作時候,結果和軟鏈結相同。但如果我們刪除硬鏈結檔案的原始檔,硬鏈結檔案仍然存在,而且保留了願有的內容。

這時,系統就「忘記」了它曾經是硬鏈結檔案。而把他當成乙個普通檔案。

二  兩者之間的區別

硬連線指通過索引節點來進行的連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節點號(inode index)。

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

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

軟鏈結也有硬鏈結沒有的缺點,因為鏈結檔案包含有原檔案的路徑資訊,所以當原檔案從乙個目錄下移到其他目錄中,再訪問鏈結檔案,系統就找不到了;還有它要系統分配額外的空間用於建立新的索引節點和儲存原檔案的路徑。

硬鏈結就沒有上面的缺陷,你想怎麼移就怎麼移

Linux 硬鏈結和軟鏈結

硬鏈結是通過鏈結原始檔的索引節點來進行有效鏈結。linux系統中的每個檔案都有乙個自己的索引節點,如同資料庫中的每條記錄都有自己的唯一索引一樣。自我感覺硬鏈結就像是windows下乙個檔案的拷貝,唯一不同的地方是多個該檔案的拷貝 硬鏈結 通過原始檔的索引節點來共享和更新自己的內容,一旦該節點上的任一...

Linux軟鏈結和硬鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬連線 硬連線指通過索引節點來進行連線。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...

Linux軟鏈結和硬鏈結

1.linux鏈結概念 linux鏈結分兩種,一種被稱為硬鏈結 hard link 另一種被稱為符號鏈結 symbolic link 預設情況下,ln命令產生硬鏈結。硬鏈結 硬鏈結指通過索引節點來進行鏈結。在linux的檔案系統中,儲存在磁碟分割槽中的檔案不管是什麼型別都給它分配乙個編號,稱為索引節...