Linux 中軟連結和硬連結的區別

2020-06-01 08:28:00

連結Link是一種快捷存取機制,它通過一個檔案指向原始檔案或目錄的方式實現快捷存取,同時還記錄了原始檔案或目錄的一些資訊。

連結允許多個不同檔案對同一個檔案進行參照。

什麼是軟連結

符號連結Symbolic Link(symlink),又稱軟連結Soft Link,是一種特殊的檔案,它指向 Linux 系統上的另一個檔案或目錄。

這和 Windows 系統中的快捷方式有點類似,連結檔案中記錄的只是原始檔案的路徑,並不記錄原始檔案的內容。

符號連結通常用於對庫檔案進行連結,也常用於連結紀錄檔檔案和網路檔案系統Network File System(NFS)上共用的目錄。

什麼是硬連結

硬連結是原始檔案的一個映象副本。建立硬連結後,如果把原始檔案刪除,連結檔案也不會受到影響,因為此時原始檔案和連結檔案互為映象副本。

為什麼要建立連結檔案而不直接複製檔案呢?

當你需要將同一個檔案儲存在多個不同位置,而且還要保持持續更新的時候,硬連結的重要性就體現出來了。

如果你只是單純把檔案複製到另一個位置,那麼另一個位置的檔案只會儲存著複製那一刻的檔案內容,後續也不會跟隨著原始檔案持續更新。

而使用硬連結時,各個映象副本的檔案內容都會同時更新。

軟連結和硬連結的區別

下表列出了軟連結和硬連結之間的區別。

#軟連結硬連結
1軟連結類似於 Windows 系統中的快捷方式硬連結是原始檔案的一個映象副本
2軟連結又稱符號連結硬連結沒有別名
3連結中任何一個檔案發生改變,都會同步到連線中的其它檔案和軟連結一樣
4軟連結可以跨檔案系統進行建立硬連結不可以跨檔案系統進行建立
5軟連結可以指向檔案或目錄硬連結只能指向檔案
6連結檔案和原始檔案之間的 inode 和檔案許可權不完全一致連結檔案和原始檔案的 inode 和檔案許可權完全一致
7連結檔案只記錄原始檔案的路徑,不記錄原始檔案的內容連結檔案記錄了原始檔案的內容
8如果原始檔案被移除,軟連結就會因為指向不存在的檔案而失效。這被稱為“掛起連結hanging link即使原始檔案被移除,連結檔案也不受影響。
9通過 ln -s <原始檔案> <連結檔案> 命令建立軟連結通過 ln <原始檔案> <連結檔案> 命令建立硬連結
10軟連結檔案的檔案許可權中有一個特殊標記 l硬連結檔案沒有特殊標記
11通過 find / -type l 命令可以查詢軟連結檔案通過 find / -samefile <原始檔案> 命令可以查詢硬連結檔案
12通過 symlinks <目錄> 命令可以查詢失效的軟連結硬連結不存在失效連結