連結是一種快捷存取機制,它通過一個檔案指向原始檔案或目錄的方式實現快捷存取,同時還記錄了原始檔案或目錄的一些資訊。
連結允許多個不同檔案對同一個檔案進行參照。
符號連結(symlink),又稱軟連結,是一種特殊的檔案,它指向 Linux 系統上的另一個檔案或目錄。
這和 Windows 系統中的快捷方式有點類似,連結檔案中記錄的只是原始檔案的路徑,並不記錄原始檔案的內容。
符號連結通常用於對庫檔案進行連結,也常用於連結紀錄檔檔案和網路檔案系統(NFS)上共用的目錄。
硬連結是原始檔案的一個映象副本。建立硬連結後,如果把原始檔案刪除,連結檔案也不會受到影響,因為此時原始檔案和連結檔案互為映象副本。
為什麼要建立連結檔案而不直接複製檔案呢?
當你需要將同一個檔案儲存在多個不同位置,而且還要保持持續更新的時候,硬連結的重要性就體現出來了。
如果你只是單純把檔案複製到另一個位置,那麼另一個位置的檔案只會儲存著複製那一刻的檔案內容,後續也不會跟隨著原始檔案持續更新。
而使用硬連結時,各個映象副本的檔案內容都會同時更新。
下表列出了軟連結和硬連結之間的區別。
# | 軟連結 | 硬連結 |
---|---|---|
1 | 軟連結類似於 Windows 系統中的快捷方式 | 硬連結是原始檔案的一個映象副本 |
2 | 軟連結又稱符號連結 | 硬連結沒有別名 |
3 | 連結中任何一個檔案發生改變,都會同步到連線中的其它檔案 | 和軟連結一樣 |
4 | 軟連結可以跨檔案系統進行建立 | 硬連結不可以跨檔案系統進行建立 |
5 | 軟連結可以指向檔案或目錄 | 硬連結只能指向檔案 |
6 | 連結檔案和原始檔案之間的 inode 和檔案許可權不完全一致 | 連結檔案和原始檔案的 inode 和檔案許可權完全一致 |
7 | 連結檔案只記錄原始檔案的路徑,不記錄原始檔案的內容 | 連結檔案記錄了原始檔案的內容 |
8 | 如果原始檔案被移除,軟連結就會因為指向不存在的檔案而失效。這被稱為“掛起連結” | 即使原始檔案被移除,連結檔案也不受影響。 |
9 | 通過 ln -s <原始檔案> <連結檔案> 命令建立軟連結 | 通過 ln <原始檔案> <連結檔案> 命令建立硬連結 |
10 | 軟連結檔案的檔案許可權中有一個特殊標記 l | 硬連結檔案沒有特殊標記 |
11 | 通過 find / -type l 命令可以查詢軟連結檔案 | 通過 find / -samefile <原始檔案> 命令可以查詢硬連結檔案 |
12 | 通過 symlinks <目錄> 命令可以查詢失效的軟連結 | 硬連結不存在失效連結 |