2010年10月3日 星期日

[Windows] Junction ( 在 Windows 上使用 symbolic link )

瀏覽數
來源 http://blog.miniasp.com/post/2009/02/Using-Junction-tool-to-make-symbolic-links-in-Windows.aspx 下載: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx 玩過 Linux 的人都知道有個 ln 指令可任意建立 link ( 包括 hard links 與 symbolic links ),這是個很好用的東西,不過在 Windows 環境卻很少聽人提起有 "link" 的概念,而 Junction 就是用來建立 "link" 的工具。 "NTFS 連接點" ( NTFS junction point ) 是 NTFS 檔案系統提供的一種能力,可以讓某一個 實體目錄 (Target) 直接 Link (連結) 到另一個 對應的目錄 (Junction Directory),這與建立「捷徑(ShortCut)」是個截然不同的概念。 舉幾個簡單的例子。若你的實體目錄在 D:\MyDocument 而你要建立一個 " NTFS 連接點 " 到 C:\Profiles\User1\MyDocs 目錄的話,就可以用以下指令完成: junction c:\Profiles\User1\MyDocs "d:\tmp\My Documents" 代表你已經成功建立 C:\Profiles\User1\MyDocs 目錄,而這個目錄是一個 " NTFS 連接點 "。從檔案總管中,你完全無法看出這目錄到底是「真實目錄」或是「NTFS 連接點」,但你可以透過「命令提示字元模式」以 dir 指令查看此目錄是不是一個 " NTFS 連接點 " (如下圖示)。 若要刪除 " NTFS 連接點 " 我發現有三種方式,要是你選錯方式,你的資料就會全部不見,所以使用上要小心謹慎,不要因為偷懶就用檔案總管進行刪除動作: 1. 使用標準的 Junction 工具程式進行刪除 ( 建議用法 ) junction -d c:\Profiles\User1\MyDocs 2. 使用檔案總管進行刪除 ( 將" NTFS 連接點 " 目錄丟進「資源回收筒」 ),當你用了這招刪除,事實上只是將 " NTFS 連接點 " 移到「資源回收筒」而已,所以 " NTFS 連接點 " 其實是還在的,所以你的來源目錄裡的檔案還會存在,不過當你「清空資源回收筒」時,包含你的原本的目錄下所有檔案都會一併被刪除! 3. 使用檔案總管進行刪除 ( 使用 Shift + Delete 直接刪除 ),這也是最無藥可救的方式 (其實有藥),一次刪除殆盡,包含你的原本的目錄下所有檔案都會一併被刪除! 在特別提醒一點,如果你從 " NTFS 連接點 " 的上層目錄開始刪除的話,你原本資料夾下的目錄一樣會消失喔。又如果你因為使用了 " NTFS 連接點 " 而「忘記」有這件事還刪除此目錄的話,那真的算你倒楣了,檔案會全數消失! 如果不放心,還是建議各位不要使用,以免檔案遺失而不自知。不過對於一些罕見的使用情境,確實是一個很棒的解決方案。

沒有留言: