NTFS符號鏈接
NTFS符號鏈接(Symbolic Link),又稱符號鏈接[1],是NTFS文件系統中指向文件系統中的另一個對象的一類對象。被指向的對象叫做「目標」。它們可以像普通文件或目錄一樣操作,但所有對符號鏈接的操作都實際作用於目標對象。符號鏈接對用戶而言是透明的,符號鏈接看上去和普通的文件和文件夾沒有區別,操作方法也一模一樣。NTFS符號鏈接的設計目的是為了和POSIX標準的操作系統兼容、並用來增進與舊版作業系統的相容性,它首次出現於Windows Vista。
- 硬鏈接(Hard link):多個文件平等地共享同一個MFT條目(inode);必須在同一個文件系統中。只能用於文件,不能用於目錄。刪除一個文件名字後,還可以用其它名字訪問該文件。硬鏈接只能用於同一個磁盤分區內的文件。不能用於不存在的文件。
- 符號鏈接(Symbolic Link):顧名思義,記錄到目標對象(文件或目錄)的路徑。可以接受相對路徑、遠程SMB網絡路徑。從NTFS 3.1開始支持目錄的符號鏈接。允許跨文件系統使用,但是對於跨主機的符號鏈接,還需要遠程機器也支持這一功能才行。目標對象可為不存在的文件或目錄。
- NTFS連接點(NTFS junction point)[2]:類似於符號鏈接,但支持目錄。只支持本地絕對路徑。[3]Windows 2000開始支持[1](頁面存檔備份,存於網際網路檔案館)。
命令及其參數
在NT6內核的操作系統,例如Windows Vista或Windows 7中,符號鏈接可以由命令mklink
創建,mklink是cmd.exe
的內部命令,語法如下[4]:
mklink [[/D] | [/H] | [/J]] link target
/D
–創建指向目錄的符號鏈接,如果不指定此參數,默認為創建文件符號鏈接。/H
–創建硬鏈接(Hardlink),或稱永久連結[1]。/J
–創建NTFS連接點(Junction point)。link
–指定符號鏈接的名字target
–指定符號鏈接指向的對象的路徑(相對或絕對皆可)。
和普通文件一樣,刪除符號鏈接也可以使用del
命令,具體語法如下:
del filename
filename
–要被刪除的符號鏈接的名字
和普通目錄(資料夾)一樣,刪除目錄符號鏈接也可以使用rd
命令,具體語法如下:
rd directoryname
directoryname
–要被刪除的符號鏈接的名字
需要提升為管理員權限才能建立符號連結。
複製鏈接的文件或目錄時,使用copy /L
或xcopy /B
,可以複製這些符號鏈接,而不是複製文件或目錄實體本身。
其他功能
符號鏈接可以指向不存在的對象,在創建符號鏈接時,系統並不會檢查對象是否存在。[5]
限制
Windows 操作系統不支援在啟動時使用符號連結,因此不應重新導向以下目錄:
- 含有hiberfil.sys的目錄(設定為不在根目錄的時候)
- \Windows
- \Windows\system32
- \Windows\system32\Config
Windows Installer 對符號連結的支援不完整。如 \Windows\Installer 目錄被重新導向,將導致多數使用 .msi 的 Windows Installer 發生 2755 及/或 1632 錯誤。
而下列目錄可以重新導向:
- \Documents and Settings
- \ProgramData
- \Program Files
- \Program Files (x86)
- \Users
但是不建議重新導向 \Users 及 \ProgramData,因為這樣做會影響 Windows Update 及 Microsoft Store 應用程式的運作。[6]
內建符號連結的範例
Windows Vista中預先建立了一些符號連結(Junction point),以增進與舊版作業系統(Windows XP)間的相容性,部分範例如下:
- C:\Document and Settings → C:\Users(連接點)
- C:\Users\All Users → C:\ProgramData(目錄符號連結)
參考資料與附註
- ^ 1.0 1.1 Windows Vista繁體中文版內所使用的名稱。
- ^ Junction Point在Windows繁體中文版內使用連接點的名稱。
- ^ Quote: "Note that Windows does not support junctions to directories on remote shares." Sysinternals Junction documentation (頁面存檔備份,存於網際網路檔案館)
- ^ mklink on a technet.microsoft.com. [2010-07-07]. (原始內容存檔於2010-07-22).
- ^ 存档副本. [2010-07-07]. (原始內容存檔於2010-07-10).
- ^ Relocation of the Users directory and the ProgramData directory to a drive other than the drive that contains the Windows directory. (原始內容存檔於2015-02-10).
外部連結
- Documentation for NTFS symbolic links on MSDN(頁面存檔備份,存於網際網路檔案館)
- CreateSymbolicLink function in the Win32 API(頁面存檔備份,存於網際網路檔案館)
- Link Shell Extension(頁面存檔備份,存於網際網路檔案館), which presents a graphical interface for creating hard and symbolic links as well as directory junctions
- Symlink accessible driver for 2000/XP/2003,
- 符號連結(Microsoft Technet上的中文說明)(頁面存檔備份,存於網際網路檔案館)