最近發(fā)現(xiàn)了mklink這個工具,使用了幾次,覺得挺好用的,分享一下:
mklink 用于創(chuàng)建 NTFS 文件系統(tǒng)中文件或目錄的鏈接,其效果和 unix 系統(tǒng)下的 ln 命令類似,可以從底層(文件系統(tǒng))實現(xiàn)文件或目錄的快捷方式或別名,以這種方式創(chuàng)建的文件或目錄鏈接對于應(yīng)用程序是透明的; 通過指定參數(shù)可以創(chuàng)建出不同形式的文件或目錄鏈接,具體分為硬鏈接、軟鏈接和符號鏈接三種,此命令從vista以后開始加入到微軟系統(tǒng)中,windows2008,windows7都可以用。
下面是這個命令的參數(shù)及說明(參數(shù)格式請直接在 cmd 下運行 mklink 查看)。
- 默認情況:文件的符號鏈接
如沒有參數(shù)指定,則創(chuàng)建文件的符號鏈接,刪除文件鏈接不會影響目標文件,且創(chuàng)建鏈接時允許目標文件不存在[1];
- 目錄的符號鏈接(SYMLINKD) /D
該參數(shù)可以創(chuàng)建目錄的符號鏈接,刪除目錄鏈接不會影響目標目錄,且創(chuàng)建鏈接時允許目標目錄不存在;
- 目錄的軟鏈接(JUNCTION) /J
該參數(shù)可以創(chuàng)建目錄的軟鏈接(聯(lián)接),作用基本和符號鏈接類似[2],NT6系統(tǒng)的用戶目錄就是以這種形式存在的;
- 文件的硬鏈接 /H
該參數(shù)可以創(chuàng)建文件的硬鏈接,即一個文件的多個別名[3],NT6系統(tǒng)WinSXS目錄下的大部分文件是以這個形式存在的;
[1] 創(chuàng)建符號鏈接和軟鏈接時允許目標文件或目錄不存在,此時若訪問鏈接文件會得到一個“位置不可用”的提示, 若之后重新將目標文件或目錄補上(路徑、名稱一致即可),則該鏈接仍然有效;
[2] 目錄符號鏈接和軟鏈接的區(qū)別在于,軟鏈接在創(chuàng)建時會自動引用目標目錄的絕對路徑,而符號鏈接允許相對路徑的引用, 如分別用 mklink /D dira tdir 和 mklink /J dirb tdir 創(chuàng)建 dira、dirb 對 tdir 的符號鏈接和軟鏈接, 之后將 dira、dirb 移動到其它目錄下,則訪問 dira 時會提示“位置不可用”,訪問 dirb 時仍然正常指向 tdir; 而分別用 mklink /D dira c:\demo\tdir 和 mklink /J dirb c:\demo\tdir 創(chuàng)建 c:\demo\tdir 的符號鏈接和軟鏈接, 再將這兩個目錄鏈接移動到其它目錄下,則 dira 和 dirb 均可正常指向 c:\demo\tdir; 由此可見當創(chuàng)建目錄鏈接時對目標目錄使用絕對路徑,D 和 J 兩個參數(shù)實現(xiàn)的目錄鏈接效果是一樣的;
[3] 只能創(chuàng)建文件的硬鏈接,使用 /H 參數(shù)創(chuàng)建目錄的硬鏈接時會提示拒絕訪問; 硬鏈接是同一個文件的不同別名,例如對 a.txt 創(chuàng)建了 b.txt 和 c.txt 兩個硬鏈接, 此時 a.txt、b.txt 和 c.txt 均是同一個文件的別名,若刪除其中任意一個或兩個, 則剩下的那個文件(無論是事先存在還是之后創(chuàng)建)不受影響,仍然指向原先那個文件。
最后再說幾點: 創(chuàng)建文件或目錄鏈接僅限于 NTFS 文件系統(tǒng),且鏈接只能針對同一個磁盤上的文件或目錄; 硬鏈接只能創(chuàng)建對本分區(qū)文件的引用,即不可創(chuàng)建跨分區(qū)的文件硬鏈接; 通過硬鏈接創(chuàng)建的別名文件在統(tǒng)計大小時會按原文件的大小計算,而軟鏈接和符號鏈接大小均為零; 硬鏈接在創(chuàng)建時會事先檢測目標文件是否存在,即不允許空鏈接的存在。
|