Windows下mklink使用, 硬連結, 軟連結和快捷方式的區別

NO IMAGE

Windows下mklink使用,   硬連結, 軟連結和快捷方式的區別

mklink是windows系統下建立符號連結和硬連結的命令工具,它是一個很好的解決檔案系統問題的工具。使用它需要管理員許可權。

首先,先來介紹下mklink這個命令,可以看下下面的截圖:

 mklink
建立符號連結。
MKLINK [[/D] | [/H] | [/J]] Link Target
        /D      建立目錄符號連結。預設為檔案
                符號連結。
        /H      建立硬連結而非符號連結。
        /J      建立目錄聯接。
        Link    指定新的符號連結名稱。
        Target  指定新連結引用的路徑
                (相對或絕對)。

說明也已經很詳細了,我們直接看下面例子吧。

 

下面的圖片向我們展示了在windows系統中建立符號連結,硬連結和快捷方式有什麼不同。

符號連結(Symbolic link)

  • 執行命令 mklink link_name target_name
  • 建立連結後的圖示和快捷方式很像, 都有一個箭頭的標誌
  • 在系統中不佔用空間
  • 在檔案系統中不是一個單獨的檔案
  • 在作業系統層解析(!?)
  • 如果原始檔被刪除了,連結就沒用了
  • 移除原始檔不會影響符號連結
  • 移除連結檔案也不會影響原始檔
  • win10_x64_build10565上測試不可以右鍵修改圖示和設定管理員執行
  • 檔案大小為0位元組和不佔用空間
  • 檔案屬性的建立時間和修改時間都是軟連結建立和修改時的時間
  • 檔案型別是.SYMLINK
  • 可以在cmd下執行軟連結(假如連結的是程式, 且執行命令是XXX即可)(win10_x64_build10565上測試通過)

硬連結(Hard link)

  • 執行命令 mklink /H link_name target_name
  • 在系統中佔用的空間與原始檔相同,但在系統中引用的是相同的物件(不是拷貝)
  • 在作業系統層解析(!?)
  • 圖示和建立快捷方式的圖示不同(沒有快捷方式的小箭頭)
  • 移除原始檔不會影響硬連結
  • 移除硬連結不會影響原始檔
  • 如果原始檔被刪除,它的內容依然通過硬連結存在
  • 硬連結檔案的任何更改都會影響到原始檔
  • 檔案大小, 佔用空間, 建立和修改時間跟原原檔案一樣
  • 可以在cmd下執行硬連線(假如連結的是程式)

快捷方式(Shortcut)

  • 在選擇的原始檔上滑鼠右鍵,通過下拉選單建立
  • 快捷方式在系統中跟原始檔是完全分離的
  • 只有那些懂得快捷方式的程式知道它們
  • 如果原始檔刪除,連結就沒用了
  • 移除原始檔不會移除快捷方式
  • 移除快捷方式不會影響到原始檔
  • 可以右鍵更改圖示或者設定管理員執行
  • 檔案屬性的建立時間和修改時間都是快捷方式建立和修改時的時間
  • 檔案大小僅有幾百位元組, 跟原檔案大小無關
  • 檔案型別是.lnk
  • 可以在cmd下執行快捷方式(假如連結的是程式, 且執行命令是XXX.LNK)(win10_x64_build10565上測試通過)

symlink_hardlink

//////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////

mklink 硬連結和符號連結的區別

硬連結只能用於檔案,不能用於資料夾,而且硬連結和目標檔案必須在同一個分割槽或者卷中。硬連結的目的是為了給檔案建立多個目錄路徑,而不像符號連結是為了指向某個已有的檔案。

假設要給Target. txt檔案建立一個硬連結,系統下載可以執行以下命令:

mklink/H Link.txt Target.txt

和符號連結一樣,硬連結中所做的任何修改,都會自動應用到目標檔案上。但是硬連結具有以下一些不同的地方。

(1)硬連結必須引用同一個分割槽或者卷中的檔案,而符號連結可以指向不同分割槽或者共享資料夾上的檔案或者資料夾。

(2) 硬連結只能引用檔案,而符號連結可以引用檔案或者資料夾。

(3)Windows會自動維護硬連結,即使把硬連結複製到其他資料夾,硬連結和目標都可以繼續訪問。

(4)刪除目標檔案,硬連結可以繼續保留。只有把目標檔案和所有的硬連結都刪除,才能把該檔案徹底刪除。

(5)如果win7把符號連結的目標檔案刪除,然後用一個同名檔案替換,則符號連結會指向新的目標檔案;而把硬連結的目標檔案刪除’再用同名檔案替換,則硬連結還是會繼續引用原始檔案。

(6)也就是說,硬連結和目標檔案的地位相等。事實上,原始的目標檔案本身也相當於硬連結,新建硬連結,只是相當於增加一個目錄路後而已。

(7)硬連結看上去和真的檔案一模一樣(實際上就是真實的檔案),不像符號連結那樣有一個快捷方式的小箭頭,但是硬連結並不會增加磁碟空間的佔用。

(8)對硬連結進行NTFS許可權的修改,會同時影響到目標檔案(因為兩者等價),而符號連結和目標檔案可以設定不同的NTFS許可權。

//////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////

mklink /D和/J的區別

目錄符號連結和目錄聯接(看原文即目錄的硬連結)的區別在於:

目錄聯接在建立時會自動引用目標目錄的絕對路徑,而符號連結允許相對路徑的引用。

如分別用 mklink /D dira tdir 和 mklink /J dirb tdir 建立 dira、dirb 對相對目錄的 tdir 的符號連結和目錄聯接,之後將 dira、dirb 移動到其它目錄下,則訪問 dira 時會提示“位置不可用”,訪問 dirb 時仍然正常指向 tdir;

且win10_x64_build10565的cmd下dir命令檢視會發現, dira符號連結(軟連結)連結到的是相對路徑下的tdir檔案(不管是否存在tdir檔案), 且檔案型別是symlink, dirb目錄聯接則連結到絕對(全)路徑下的tdir檔案, 且檔案型別是junction(可能是系統自動把相對路徑轉換為全路徑)

而分別用 mklink /D dira c:\demo\tdir 和 mklink /J dirb c:\demo\tdir 建立 c:\demo\tdir 的符號連結和目錄聯接,再將這兩個目錄連結移動到其它目錄下,則 dira 和 dirb 均可正常指向 c:\demo\tdir;

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

英文原文:

MKLINK [[/D] | [/H] | [/J]] Link Target

/D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction.

/D creates a symbolic link, or a soft link.This essentially acts like a shortcut to a folder in prior versions of Windows, except you don’t have to use an actual shortcut.

/H creates a hard link, which points directly to the file.This option can’t be used for folders directly for some reason, you’ll have to use the next option.

/J creates a “Directory Junction”A Directory Junction is actually just a hard link to a directory. This is a feature that existed prior to Vista as well. If you are trying to symlink to a directory using a hard link, then you should use this option.

Understanding Hard vs Soft Links================================Hard Link

A hard link directly points to the file, and acts to the operating system as if it is the file itself. You’ll want to use this option the majority of the time if you are trying to fake an application’s directory.

Soft Link

A soft link is essentially a shortcut to a file or folder – if you are using Windows explorer, you’ll be redirected to the directory if you double-click on a shortcut, it won’t pretend its part of the filesystem. You can still directly reference or open a file
with the symlinked path, and it mostly works.

XX