Windows下mklink使用, 硬链接, 软链接和快捷方式的区别
mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具。使用它需要管理员权限。
首先,先来介绍下mklink这个命令,可以看下下面的截图:
mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
/D 创建目录符号链接。默认为文件
符号链接。
/H 创建硬链接而非符号链接。
/J 创建目录联接。
Link 指定新的符号链接名称。
Target 指定新链接引用的路径
(相对或绝对)。
说明也已经很详细了,我们直接看下面例子吧。
下面的图片向我们展示了在windows系统中创建符号链接,硬链接和快捷方式有什么不同。
符号链接(Symbolic link)
硬链接(Hard link)
快捷方式(Shortcut)
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
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