Windows 7 mklink命令詳解

mklink是Windows 7下的一個類似於linux下In的命令,其作用是在NTFS文件系統中創建文件或目錄的鏈接(類似於桌面快捷方式)。如果加以利用其發揮的作用是非常的大的,不僅可以幫助我們節省不少時間,而且可以使我們重裝系統後不再丟失用戶文件。
Mklink命令詳細介紹
Windows 7下的mklink命令通過指定參數可以建立出不同形式的文件或目錄鏈接,分為硬鏈接(hard link)、符號鏈接(symbolic link)和軟鏈接(聯接)(junction)三種。

1.符號鏈接(symbolic link)
建立一個軟鏈接相當於建立一個文件(或目錄),這個文件(或目錄)用於指向別的文件(或目錄),和win的快捷方式有些類似。刪除這個鏈接,對原來的文件(或目錄)沒有影像沒有任何影響;而當你刪除原文件(或目錄)時,再打開鏈接則會提示“位置不可用”。

2.軟鏈接(聯接)(junction)
作用基本和符號鏈接類似。區別在於,軟鏈接在建立時會自動引用原文件(或目錄)的絕對路徑,而符號鏈接允許相對路徑的引用。

3.硬鏈接(hard link)
建立一個硬鏈接相當於給文件建立了一個別名,例如對1.TXT創建了名字為2.TXT的硬鏈接,若使用記事本對1.TXT進行修改,則2.TXT也同時被修改,若刪除1.TXT,則2.TXT依然存在,且內容與1.TXT一樣。

建立鏈接請注意:
1、建立文件或目錄鏈接限於 NTFS 文件系統,符號(軟)鏈接的建立可以跨文件系統;
2、硬鏈接只能用於文件,不能用於目錄,符號(軟)鏈接可以為目錄建立鏈接;
3、硬鏈接只能建立同一分區內的文件指向;
4、硬鏈接不允許對空文件建立鏈接,符號(軟)鏈接可以。

 

Mklink的參數定義
無參數指定:建立文件的符號鏈接。無參數指定的默認情況下,建立的是文件的符號鏈接,刪除鏈接文件不會影響源文件,
/d:建立目錄的符號鏈接符號鏈接(symbolic link)
/j:建立目錄的軟鏈接(聯接)(junction)
/h:建立文件的硬鏈接(hard link)

命令格式:mklink /d(定義參數) \MyDocs(鏈接文件) \Users\User1\Documents(原文件)

最後,至於刪除建立的鏈接,跟刪除文件一樣使用”DEL”命令。

Mklink命令用途
轉移系統中的用戶設置文件

Windows 7中將用戶設置與系統文件分離,所有的用戶設置及用戶文件都存儲在C盤下的User目錄(在中文版Windows 7中顯示為“用戶”目錄),重裝系統後所有的系統設置及用戶文件都會消失。

Windows 7安裝完成後可以將C盤下的User目錄轉移到非系統分區,如D盤,這樣,重裝系統後只要重新將C盤下的User目錄鏈接到D盤即可。我們在創建鏈接後系統在訪問C:/User目錄其實是在訪問D:/User目錄。

命令如下:
1.複製User目錄到D盤: robocopy “C:\Users” “D:\Users” /E /COPYALL /XJ
2.強制刪除User目錄: rmdir “C:\Users” /S /Q
3.創建C盤下的User的軟件鏈接,鏈接到D盤User目錄:mklink /J “C:\Users” “D:\Users”

重裝系統後只需重複第二條和第三條命令及可

有了這條命令就再也不怕重新系統了
mklink /J C:\Windows\Prefetch R:\Prefetch

mklink /J D:\www\logs R:\logs\www
mklink /J E:\xampp\Apache\logs R:\logs\hkycmc

win7下ntfs文件系統的軟連接和硬鏈接    http://blog.csdn.net/wzb56_earl/article/details/9158057
Windows 7下的mklink命令通過指定參數可以建立出不同形式的文件或目錄鏈接,分為硬鏈接(hard link)、符號鏈接(symbolic link)和軟鏈接(目錄聯接)(junction)三種。
1.符號鏈接(symbolic link) 相當於快捷方式
建立一個軟鏈接相當於建立一個文件(或目錄),這個文件(或目錄)用於指向別的文件(或目錄),和win的快捷方式有些類似。刪除這個鏈接,對原來的文件(或目錄)沒有影像沒有任何影響;而當你刪除原文件(或目錄)時,再打開鏈接則會提示“位置不可用”。

2.軟鏈接(目錄聯接)(junction) 源路徑變更不會失效
作用基本和符號鏈接類似。區別在於,軟鏈接在建立時會自動引用原文件(或目錄)的絕對路徑,而符號鏈接允許相對路徑的引用。

3.硬鏈接(hard link)
建立一個硬鏈接相當於給文件建立了一個別名,例如對1.TXT創建了名字為2.TXT的硬鏈接,若使用記事本對1.TXT進行修改,則2.TXT也同時被修改,若刪除1.TXT,則2.TXT依然存在,且內容與1.TXT一樣。

建立鏈接請注意:
1、建立文件或目錄鏈接限於 NTFS 文件系統,符號(軟)鏈接的建立可以跨文件系統;
2、硬鏈接只能用於文件,不能用於目錄,符號(軟)鏈接可以為目錄建立鏈接;
3、硬鏈接只能建立同一分區內的文件指向;
4、硬鏈接不允許對空文件建立鏈接,符號(軟)鏈接可以。

 

 

Mklink的參數定義

無參數指定:建立文件的符號鏈接。無參數指定的默認情況下,建立的是文件的符號鏈接,刪除鏈接文件不會影響源文件,
/d:建立目錄的符號鏈接符號鏈接(symbolic link)
/j:建立目錄的軟鏈接(目錄聯接)(junction)
/h:建立文件的硬鏈接(hard link)

命令格式:mklink /d(定義參數) \MyDocs(鏈接文件) \Users\User1\Documents(原文件)

最後,至於刪除建立的鏈接,跟刪除文件一樣使用”DEL”命令。

 

 

ntfs磁盤格式有個高級特性——軟鏈接和硬鏈接!

他們有什麼區別我就不具體說了,網上很多(其實是讓我說我也說不出來)。

 

我稍微具體說下mklink這個命令。

 

mklink 便是用來創建符號鏈接的,這個命令並不知名,使用的人也不多。

 

自從 Vista 以後,微軟便在 widows中 偷偷地用起了這個工具 。

在用戶目錄下,可以看到很多很像快捷方式的文件,當然這是隱藏的,但卻不能打開,其實這便是符號鏈接。

 

mklink 用於創建 NTFS 文件系統中文件或目錄的鏈接,以從底層(文件系統)實現文件或目錄的快捷方式或別名,

以這種方式創建的文件或目錄鏈接對於應用程序是透明的;

 

通過指定參數可以創建出不同形式的文件或目錄鏈接,具體分為硬鏈接、軟鏈接和符號鏈接三種,

下面是這個命令的參數及說明(參數格式請直接在 cmd 下運行 mklink 查看)。

 

默認情況:文件的符號鏈接

如沒有參數指定,則創建文件的符號鏈接,刪除文件鏈接不會影響目標文件,且創建鏈接時允許目標文件不存在[1];

目錄的符號鏈接(SYMLINKD) /D

該參數可以創建目錄的符號鏈接,刪除目錄鏈接不會影響目標目錄,且創建鏈接時允許目標目錄不存在;

目錄的軟鏈接(JUNCTION) /J

該參數可以創建目錄的軟鏈接(聯接),作用基本和符號鏈接類似[2],NT6系統的用戶目錄就是以這種形式存在的;

文件的硬鏈接 /H

該參數可以創建文件的硬鏈接,即一個文件的多個別名[3],NT6系統WinSXS目錄下的大部分文件是以這個形式存在的;

 

[1] 創建符號鏈接和軟鏈接時允許目標文件或目錄不存在,此時若訪問鏈接文件會得到一個“位置不可用”的提示,

若之後重新將目標文件或目錄補上(路徑、名稱一致即可),則該鏈接仍然有效;

 

[2] 目錄符號鏈接和軟鏈接的區別在於,軟鏈接在創建時會自動引用目標目錄的絕對路徑,而符號鏈接允許相對路徑的引用,

如分別用 mklink /D dira tdir 和 mklink /J dirb tdir 創建 dira、dirb 對 tdir 的符號鏈接和軟鏈接,

之後將 dira、dirb 移動到其它目錄下,則訪問 dira 時會提示“位置不可用”,訪問 dirb 時仍然正常指向 tdir;

而分別用 mklink /D dira c:\demo\tdir 和 mklink /J dirb c:\demo\tdir 創建 c:\demo\tdir 的符號鏈接和軟鏈接,

再將這兩個目錄鏈接移動到其它目錄下,則 dira 和 dirb 均可正常指向 c:\demo\tdir;

由此可見當創建目錄鏈接時對目標目錄使用絕對路徑,D 和 J 兩個參數實現的目錄鏈接效果是一樣的;

 

[3] 只能創建文件的硬鏈接,使用 /H 參數創建目錄的硬鏈接時會提示拒絕訪問;

硬鏈接是同一個文件的不同別名,例如對 a.txt 創建了 b.txt 和 c.txt 兩個硬鏈接,

此時 a.txt、b.txt 和 c.txt 均是同一個文件的別名,若刪除其中任意一個或兩個,

則剩下的那個文件(無論是事先存在還是之後創建)不受影響,仍然指向原先那個文件。

 

 

最後再說幾點:

創建文件或目錄鏈接僅限於 NTFS 文件系統,且鏈接只能針對同一個磁盤上的文件或目錄;

硬鏈接只能創建對本分區文件的引用,即不可創建跨分區的文件硬鏈接;

通過硬鏈接創建的別名文件在統計大小時會按原文件的大小計算,而軟鏈接和符號鏈接大小均為零;

硬鏈接在創建時會事先檢測目標文件是否存在,即不允許空鏈接的存在。

 

應用:
1備份搜狗高速瀏覽器的配置文件(對於經常重裝系統的同學來說,我認為這還是很不錯的一個方法)
搜狗高速瀏覽器的配置文件默認在C:\Users\zx\AppData\Roaming\SogouExplorer,不能自己設置存放位置,我們可以運行以下命令:mklink /D C:\Users\zx\AppData\Roaming\SogouExplorer D:\Junction\SogouExplorer,將C:\Users\zx\AppData\Roaming\SogouExplorer這個目錄 映射到D:\Junction\SogouExplorer這個目錄,以後重裝什麼的,直接運
行這個命令就OK了,配置什麼的都會和以前一樣。

 

這個大家可以發揮發揮,舉一反三,比如備份cookies什麼的也不是不可以的(WIN7旗艦版下親測)。但是怎麼把系統默認的那個Cookies文件夾給替換掉就看大家自己本事了。
2轉移臨時文件夾的位置,以減少磁盤碎片的產生
mklink /D C:\Users\zx\AppData\Local\Temp D:\Junction\Temp

 

補充下:

Sysinternals Suite中也有個叫Junction的小工具,也可以建鏈接,但它和mklink貌似有點區別。

因為Junction語法更簡單些,我一直用它來建鏈接,我運行了這個命令Junction C:\Users\zx\AppData\Local\Temp D:\Junction\Temp

貌似一直都沒發現有問題,直到有一天,我發現我的windows照片查看器打不開任何圖片了,提示什麼無權限什麼的錯誤,具體什麼我忘了,囧!後來還遇到ChromePlus擴展無法安裝,一裝擴展ChromePlus就崩潰……

經過好長時間的探索,才發現是Junction C:\Users\zx\AppData\Local\Temp D:\Junction\Temp這個命令惹的禍,用mklink C:\Users\zx\AppData\Local\Temp D:\Junction\Temp就沒問題,再囧一個!

 

後來知道大名鼎鼎的Nirsoft有個小工具可以查看特定目錄下的鏈接,ntfslinksview,可以在這裡下載到
http://www.nirsoft.net/utils/ntfs_links_view.html

 

運行後發現它對mklink建的鏈接顯示是正確的,軟鏈接或硬鏈接,然而用junction的,是吧,類型就顯示為junction,然後對目標文件夾什麼的顯示貌似也有問題,很是無語。

不知道是Junction這個工具的bug還是什麼,或者它和mklink原本就機理不同?無從得知!

 

所以我還是推薦使用mklink啦,畢竟是系統自帶的,兼容性更好!

出處 : www.ivantsoi.com:88/software/System/mklink.txt

發表迴響