Linux ln 建立連結檔 (Hard/Symbolic Link)
在 Windows 中我們習慣建立「捷徑」,在 Linux 中也有類似的概念,稱為 連結 (Link)。 Link 分為兩種:Symbolic Link (軟連結) 與 Hard Link (硬連結)。
ln 指令語法
ln [參數] [來源檔案] [連結名稱]
符號連結 (Symbolic Link / Soft Link)
這就是 Linux 世界的「捷徑」。它只是一個指向原始檔案路徑的一種特殊檔案。 如果原始檔案被刪除或移動,這個連結就會失效 (Broken Link)。
建立方式:加上 -s 參數
這是最常用的方式! 99% 的情況你都是要用這個。
# 建立一個指向 /var/www/html/index.html 的捷徑,放在家目錄
ln -s /var/www/html/index.html ~/my_web_page
建立後,你可以像操作一般檔案一樣操作連結檔,實際上都是在操作原始檔案。
軟連結的特性
- 可以對「目錄」建立連結。
- 可以跨不同的檔案系統 (Partition)。
- 源檔案刪除,連結失效。
硬連結 (Hard Link)
Hard Link 比較抽象。它不是捷徑,而是「分身」。 在 Linux 檔案系統中,檔案內容與檔名是分開儲存的。Hard Link 就是指「兩個不同的檔名,指向硬碟上的同一個資料區塊 (Inode)」。
建立方式:不加參數
ln source.txt hardlink.txt
硬連結的特性
- 兩個檔案地位平等。刪除 source.txt,hardlink.txt 的內容依然存在(因為資料還在)。
- 修改其中一個,另一個也會跟著變(因為根本是同一份資料)。
- 不能 對目錄建立 Hard Link。
- 不能 跨檔案系統。
什麼時候該用哪種?
| 特性 | Symbolic Link (軟連結) | Hard Link (硬連結) |
|---|---|---|
| 參數 | ln -s | ln |
| 類似概念 | Windows 捷徑 | 檔案分身 |
| 跨檔案系統 | ✅ 可以 | ❌ 不行 |
| 連結目錄 | ✅ 可以 | ❌ 不行 |
| 原始檔刪除 | ❌ 連結失效 | ✅ 資料還在 |
| 常用程度 | ⭐⭐⭐⭐⭐ (極高) | ⭐ (極低) |
除非你有非常特殊的備份需求,否則請一律使用
ln -s 建立 Symbolick Link 即可。這也是最符合直覺的用法。實戰範例:Nginx/Apache 設定
Linux 網頁伺服器常利用 Soft Link 來管理網站啟用狀態。
例如 /etc/nginx/sites-enabled/ 裡的檔案,通常都是指向 /etc/nginx/sites-available/ 的軟連結。
# 啟用 default 網站設定
ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/