Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 三種連結檔案深度解析:符號連結、硬連結、反射連結

編輯:Linux 教學

Linux 檔案系統三種連結機制指向檔案三個不同層面:檔名(目錄項)、中繼資料、資料塊。理解其差異對備份、去重、容器儲存驅動至關重要。

核心概念對照

類型指向inode跨檔案系統刪除源檔影響空間佔用
符號連結檔名(路徑字串)獨立新 inode✅ 支援變成斷連結極小(只存路徑)
硬連結中繼資料共享同一 inode❌ 僅同檔案系統不影響,連結計數 -1零(共享資料塊)
反射連結資料塊獨立新 inode❌ 需檔案系統支援不影響(CoW 複製寫入)極小(共享資料塊,寫時複製)

關係圖解

name2 --symlink--> name1 --hardlink--> inode1 --reflink--> data
name3 --hardlink--/
name4 --hardlink--> inode2 --reflink-/

建立指令與實戰

1. 符號連結 - 如 Windows 捷徑

ln -s 目標檔案 連結名
# 或 cp --symbolic-link 目標 連結名
  • 可連結目錄、跨分區、掛載點
  • ls -l 顯示 lrwxrwxrwx link -> target

2. 硬連結 - 同一 inode 多別名

ln 目標檔案 連結名
# 或 cp --link 目標 連結名
  • 所有一般檔案本質上都是硬連結(連結計數 ≥1)
  • 備份神技:cp -al /src /backup/$(date +%F) 秒級完成「全量備份」,僅佔用變更檔案空間
  • stat 可見 Links: N

3. 反射連結 - 複製時寫入

cp --reflink=always 目標檔案 連結名
# 或 cp --reflink=auto  # 檔案系統不支援則回退完整複製
  • 支援檔案系統:Btrfs、XFS(v4.5+)、OCFS2、overlayfs
  • 容器映像層、虛擬機磁碟、資料庫快照的底層技術
  • 寫入時才分配新資料塊,空間效率極高

驗證實驗

echo "original" > file.txt
ln -s file.txt symlink.txt
ln file.txt hardlink.txt
cp --reflink=always file.txt reflink.txt

ls -li *.txt
# inode 號:symlink 不同,hardlink 相同,reflink 不同

echo "modified" > file.txt
cat symlink.txt   # 顯示 modified(指向同檔名)
cat hardlink.txt  # 顯示 modified(共享 inode)
cat reflink.txt   # 顯示 original(CoW 已分離)

選型原則:需跨分區/連結目錄 → 符號連結;同分區多別名/備份去重 → 硬連結;大檔案快照/容器儲存/頻繁複製少修改 → 反射連結。

Copyright © Windows教程網 All Rights Reserved