搜索
查看: 2302|回复: 0

windows中的软链接硬链接的区别

[复制链接]

137

主题

219

帖子

482

积分

中级会员

中国黑客

Rank: 3Rank: 3

积分
482
QQ
发表于 2019-4-1 08:37:51 来自手机 | 显示全部楼层 |阅读模式
首先是命令行的关注,在家里使用了太久的marjaro,逐渐转为开发,以前对windows的命令行不关注也变为关注了,PowerShell安装了scoop,可以一键安装不少工具了,但是有一个痛点就是,以前对用户目录不关注,但是linux用久了反而觉得用户目录好用挖,我想在在命令行下切到我快捷方式指向的目录,但是是不行的,然后了解了一下这方面,就像是linux下的软链接硬链接一样。

使用PowerShell

软链接

New-Item -ItemType SymbolicLink -Path C:\\image -Target C:\\source.txt

硬链接

New-Item -ItemType HardLink -Path C:\\image.txt -Target C:\\source.txt
Junction


windows中文件与文件夹是完全不同的两种类型,创建文件夹链接不可以使用 HardLink ,但是可以使用 Junction

New-Item -ItemType Junction -Path C:\\test\_image -Target C:\\test\_source

虽然powershell可以建立,但是命令还是很繁琐,cmd下有个工具mklink

使用CMD

cmd下有个好用的工具mklink
C:\\>mklink

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

其实这部分和linux中的是差不多的

符号(软)链接(Symbolic link)

执行命令 mklink link_name target_name
创建链接后的图标和快捷方式很像
在系统中不占用空间
在文件系统中不是一个单独的文件
在操作系统层解析(!?)
如果源文件被删除了,链接就没用了
移除源文件不会影响符号链接
移除链接文件也不会影响源文件
硬链接(Hard link)

执行命令 mklink /H link_name target_name
在系统中占用的空间与源文件相同,但在系统中引用的是相同的对象(不是拷贝)
在操作系统层解析(!?)
图标和创建快捷方式的图标不同
移除源文件不会影响硬链接
移除硬链接不会影响源文件
如果源文件被删除,它的内容依然通过硬链接存在
硬链接文件的任何更改都会影响到源文件
快捷方式有何不同

首先不说快捷方式占空间, 软链接不占空间,还有我觉得很重要的区别是快捷方式带后缀.lnk,是个文件,无法通过路径重定向到目标地址,反正我不太推荐这个,除非是建立到桌面方便鼠标点击的用户。

软链接和Junction的区别

可能你会疑惑 mklink 命令参数 /D 和 /J 的区别。这里我直接贴一段我查到的东西:

创建 /d 可以使用相对路径方式创建 /j 必须绝对路径方式创建 此区别意义不大,建议所有的mklink目录均用绝对路径创建
复制和剪切 复制:/d /j 均生成源目录的内容副本,变为一般文件夹 剪切/移动:/d 生成的目录,移动到其他地方,仍旧保持链接。对源目录无影响,/d生成的目录消失 /j 生成的目录,移动到其他地方,会产生一个新的副本文件夹,源文件夹内容全部移至新普通文件夹内,源文件夹清空,源文件夹仍旧存在,/j生成的目录也依旧存在
软件打开 用filedialog打开,/d生成的目录,地址栏会跳到源目录位置。 /J生成的目录,地址栏不会跳到源目录位置。 用FolderDialog打开,两者相同。

整体来说,/D更像一个快捷方式。

符号链接(Symlink,Softlink)是对文件或目录的引用,实际上符号链接本身是一个“记录着所引用文件或目录的绝对或相对路径”的特殊文件,通过符号链接的操作都会被重定向到目标文件或目录。

交接点(Junction),也称为“再分析点”,是 NTFS 3.0 及以上文件系统(Windows 2000 及以上系统)的特性,它是链接本地目录(可跨卷)的访问点,通过交接点的操作都会被系统映射到实际的目录上。通过建立交接点,可以在保证一个目录实例(目录的一致性)的前提下,允许用户或程序从本地文件系统中的多个位置访问此目录。
对符号链接和快捷方式的“读、写、遍历”等操作都会被重定向到目标文件或目录;但对它们的“复制、删除、移动、配置 ACL”等操作只针对自身;符号链接不但可以应用于本地系统,还可以应用 UNC 路径。

对交接点内文件和子目录的“建立、删除、修改”等操作都被映射到对应的目录中的文件和子目录上;
对交接点的“复制、粘贴、剪切、配置 ACL”,只会影响此交接点;
在同一卷内移动交接点,只会影响此交接点;但在不同卷间移动交接点,会将此交接点转换为正常目录,并且交接点对应目录下的所有内容都会被移动;
通过“资源浏览器(Explorer.exe)”和“命令行 del”等工具删除交接点时,会同时删除对应目录下的所有内容(但不会删除目录);可通过“linkd.exe /d”安全的删除交接点;但在 vista 及以后的系统中,对交接点的删除会被正确的处理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

温馨提示
1:发帖请遵守《中华人民共和国网络安全法》,发帖内容不得维护国家的、集体的、个人的利益。
2:请勿发布恶意攻击他人的技术文章、工具、和使用教程,发现后删帖处理。
3:本站的目的在于让更多的人了解网络安全,避免受到他人的恶意攻击。
4:本站中的部分文章,可能会出现一些“技术类手段”,但这仅仅为学习演示所用,而非恶意传播技术。
5:本站中的部分文章,可能转载自互联网。如有侵权行为,联系我们删除即可。
6:学习仅是充实头脑,切勿恶意攻击个人、企业等。所造成的法律后果一切由自己承担,本站及其站长概不负责。
我知道了
快速回复 返回顶部 返回列表