現在使用的 Windows11 版本,不知為何無法安裝以前常用的圖形化工具:Link Shell Extension ,只好回來使用微軟內建的 mklink 指令。
官方的指令說明寫得不清不楚:
建立符號連結。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 建立目錄符號連結。預設是檔案符號連結。
/H 建立永久連結而不是符號連結。
/J 建立目錄連接。
Link 指定新符號連結名稱。
Target 指定新連結參照的路徑 (相對或絕對)。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 建立目錄符號連結。預設是檔案符號連結。
/H 建立永久連結而不是符號連結。
/J 建立目錄連接。
Link 指定新符號連結名稱。
Target 指定新連結參照的路徑 (相對或絕對)。
這樣寫太過語焉不詳,實際上這個指令的效果是:
- 不加選項: 用於建立檔案的 Symbolic Link.
- /D選項: 用於建立目錄的 Symbolic Link.
- /H選項: 用於建立檔案的 Hardlink.
- /J選項: 用於建立目錄的 Junction.
Hardlink, Junction, 與 Symbolic Link 都是連接到儲存裝置上面,實際資料的額外連結方式,類似捷徑但功能更完整,比如說可以複製移動。
Hardlink 是直接多一個分身但指向同一實體,會被視為獨立存在,可以改名字任意搬移或是刪除,不影響其他分身。直到刪掉最後一個分身,就等於全部整個刪除了。這很方便,但因為Hard Link指向的是每個NTFS磁碟區獨佔的檔案配置資訊,所以Hard Link無法跨磁碟區跟檔案系統。也就是說C槽資料只能增加Hardlink在C槽,不能在D槽。
相對於 Hardlink,Junction 與 Symbolic Link 屬於 Soft link,比較有彈性可以跨磁區,有點像捷徑,主體[標的]不能改名,刪除或移動[連結]時,[標的]不受影響。
Junction 的連結與標的只能是資料夾,必需是本機的本地檔案系統,且會儲存絕對路徑,主體搬家分身就失效。
Symbolic Link 的連結與標的可以是檔案或資料夾,可以在本機也可以在網路其他地方,可以儲存相對路徑,主體搬家分身可以不失效。可以視為 Junction 的進階版本,唯一缺點是建立時必須有管理員權限。
以上總結下來,日常主要以 Symbolic Link 為主,具體使用方式:
建立 [D:\Temp] 連結目錄,指向本機不同磁碟 [C:\Users\Tony\AppData\Local\Temp]
mklink /d D:\temp C:\Users\Tony\AppData\Local\Temp
mklink /d D:\temp C:\Users\Tony\AppData\Local\Temp
或
建立 [D:\filelog.bak] 連結檔,指向網路位置檔案 [\\192.168.1.100\system.log]
mklink D:\filelog.bak \\192.168.1.100\system.log
做好的 Symbolic Link 要搬移、改名、刪除都可以任意處理。