`
fantaxy025025
  • 浏览: 1311263 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Windows下mklink使用, 硬链接, 软链接和快捷方式的区别

 
阅读更多

=

参考:https://blog.csdn.net/guyue35/article/details/49761347/

参考:https://blog.csdn.net/weixin_30832983/article/details/99744172

有改动,有整理。

=

mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具。使用它需要管理员权限。

首先,先来介绍下mklink这个命令,可以看下下面的截图:

 mklink
创建符号链接。
MKLINK [[/D] | [/H] | [/J]] Link Target
        /D      创建目录符号链接。默认为文件
                符号链接。
        /H      创建硬链接而非符号链接。
        /J      创建目录联接。
        Link    指定新的符号链接名称。
        Target  指定新链接引用的路径
                (相对或绝对)。

说明也已经很详细了,我们直接看下面例子吧。

  

使用方式 适用于 快捷方式小箭头
不带参数 文件
/D 文件夹
/J 文件夹
/H 文件

 

上面的表格顺序,从上到下的行为从越来越像快捷方式到越来越像两个独立的文件夹。 

 

下面的图片向我们展示了在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上测试通过)

 

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.

 

 

整理这些坑并提供解决方法

0x01 坑:PowerShell 中没有 mklink 命令

是的,PowerShell 中就是中没有 mklink 命令。如果要在 powershell 中使用 mklink,那么得先敲 cmd 进入 cmd 之后再使用 mklink 命令。

如果你是一个重度强迫症患者,那么可以编写一个 powershell 的扩展函数来实现:Creating a Symbolic Link using PowerShell - Learn Powershell - Achieve More

0x02 坑:权限

默认我们的用户账户是 Administrators 组的,会继承它的权限设定。正常情况下,我们使用 mklink 是可以成功执行的。但如果文件系统的设置比较奇怪或者重装过系统,那么可能出现没有权限的错误。

  1.  
    C:\Users\lvyi>mklink /D D:\Foo D:\OneDrive\Foo
  2.  
    你没有足够的权限执行此操作。

这时,使用管理员权限启动 cmd 是最简单的做法。不过也可以考虑在 本地安全策略(secpol.msc)\本地策略\用户权利分配 中添加当前用户。

 

=

=

=

 

分享到:
评论

相关推荐

    windows下创建软链接.大家都知道win有快捷方式,linux有软链接,但是你知道win也能创建软链接吗?

    总的来说,Windows软链接提供了一种高效、灵活的文件管理方式,让Windows用户能够享受到类似Linux系统中软链接的优点,而无需依赖于快捷方式,后者只是一种桌面级别的引用,而非真正的文件系统层链接。理解并熟练...

    mklink符号链接创建工具

    软链接类似于快捷方式,而硬链接则更像文件的多个入口。在Windows 7及更高版本中,内置了`mklink`命令,用户可以通过命令行来创建这些链接,但这个过程可能对不熟悉命令行操作的用户来说有些复杂。 描述中提到的...

    设置符号链接 win7 mklink.zip

    `mklink`是Windows命令行中的一个内置工具,它允许用户在命令提示符下创建硬链接、软链接(即符号链接)以及目录链接。硬链接类似于文件的多个索引节点,而符号链接则更像是一个指针,指向另一个文件或目录的位置。...

    MKLINK的妙用

    这个命令允许用户创建符号链接(Symbolic Link)或硬链接(Hard Link),类似于快捷方式,但功能更为强大。在标题"MKLINK的妙用"中,重点提及了它在转移系统文件夹方面的应用,这主要是为了给系统瘦身,提高运行效率...

    java在windows平台创建快捷方式

    例如,我们可以使用`mklink`命令来创建快捷方式,它的语法是`mklink /D <快捷方式路径> <目标路径>`,其中`/D`表示创建的是目录快捷方式(如果目标是文件夹),省略则表示创建文件快捷方式。 2. **构建命令**:在...

    windows四种文件链接方式

    在Windows操作系统中,链接是一种特殊的文件系统功能,允许用户创建多个文件夹项指向同一个文件或文件夹。...尽管Linux用户可能更熟悉硬链接和软链接,但Windows的链接方式同样强大,值得用户深入学习和利用。

    Java软链接操作工具MkLink、腾出系统盘

    1、使用的是mklink指令,生成软链接 2、当然熟悉mklink命令的人也可以手动操作,但是可能会很麻烦 3、写这个工具的目的是用来腾系统盘的,可以将指定目录下的文件夹软链接到其它盘上面,这样系统盘上面就空出来了,...

    windows快捷方式(lnk文件)格式文档

    用户也可以通过命令行工具`mklink`创建硬链接或符号链接,但这些不是真正的快捷方式,而是系统层面的链接。 使用LNK文件时,双击快捷方式即可启动目标程序,或者右键点击选择“属性”查看或修改其关联信息。快捷...

    mklink.exe

    在Windows环境下,链接类似于快捷方式,但它们在文件系统层面上工作,允许用户通过一个文件或目录访问另一个文件或目录的实体。这在管理大型项目、避免文件冗余以及在不同位置引用同一文件时非常有用。 符号链接...

    程序创建快捷方式

    这些方法通常涉及命令行操作,如在DOS窗口中使用`mklink`命令创建硬链接或符号链接。 总之,创建程序快捷方式是提高电脑使用效率的重要手段,尤其对于频繁使用的应用。了解如何创建和管理快捷方式,不仅可以节省...

    win7下的mklink命令[文].pdf

    `mklink` 是一个在Windows操作系统中用于创建符号链接(Symbolic Links)、硬链接(Hard Links)以及目录联接(Directory Junctions)的强大工具。该命令可以帮助用户更好地管理文件系统,尤其在需要在不同磁盘分区...

    exe创建快捷方式.7z

    `mklink`可以创建硬链接、符号链接或快捷方式。对于桌面快捷方式,我们需要的是快捷方式类型,它的语法是: ```cmd mklink /D [快捷方式名称] [目标路径] ``` 这里,`/D`表示创建目录快捷方式,适合于文件夹;如果...

    创建 快捷 方式.rar

    在Windows操作系统中,快捷方式是一种简便的...总结,创建快捷方式是提高工作效率的有效手段,通过了解快捷方式的创建方法、工作原理和自定义方式,我们可以更好地组织和管理电脑上的应用程序和文件,让操作更加便捷。

    创建安装后的快捷方式.rar

    在Windows操作系统中,创建安装后的快捷方式是一种常见的用户操作,旨在方便快速访问程序、文件或文件夹。这个压缩包“创建安装后的快捷方式.rar”很可能包含了一种教程或脚本,用于帮助用户自动创建快捷方式。下面...

    快捷方式工具

    本文将深入探讨快捷方式的概念、创建过程以及如何获取快捷方式的真实地址,同时我们会以Java编程语言为例,讨论如何实现快捷方式的创建和管理。 快捷方式是操作系统提供的一种机制,它本质上是一个指向实际文件或...

    Windows7操作系统文件夹的奥妙.docx

    在Windows 7操作系统中,文件夹的奥秘主要体现在Windows目录下的winsxs文件夹,这是一个体积庞大的组件,其设计和工作原理与NTFS文件系统的硬链接功能密切相关。硬链接是NTFS文件系统的一个独特特性,它允许在文件...

    windows_shortcut.rar_windows

    这里,我们将深入探讨Windows快捷方式的概念、创建、管理和使用方法。 **快捷方式的概念** 快捷方式本质上是一个指向另一个文件或程序的指针,它并不占用原文件的存储空间。它的图标通常带有小箭头标志,表明它并非...

    创建快捷方式

    这个“创建快捷方式”的小例子将帮助我们理解如何在不同的环境中创建和使用快捷方式。 在Windows操作系统中,创建快捷方式通常有以下几种方法: 1. **右键拖动法**:找到目标文件或程序,按住鼠标左键不放,拖动到...

Global site tag (gtag.js) - Google Analytics