win7下ntfs文件系统的软连接和硬链接

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啦,毕竟是系统自带的,兼容性更好!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值