分享

解析Vista和Win7系统的符号链接和mklink命令(下)

 昔影若梦 2014-10-11

四、用命令行对链接进行操作

前文已经说过,直接用资源管理器,不能将d型链接跨分区移动,但可以使用命令xcopy加参数/b完成,例如:

    E:\test>mklink /d cc e:\test\aa

    E:\test>xcopy e:\test\cc f:\cc /b

连续执行上述两条命令,就可以将链接cc复制到f盘,且链接关系保持不变。

当使用相对路径建立的d型链接移动后的表现就更为复杂,例如:

    E:\test>mklink /d bb aa

    E:\test>xcopy e:\test f:\test /b /e

连续执行上述两条命令(参数/e是要求将目录下全部子文件夹一起拷贝),可以成功,但拷贝过去的链接bb,指向的目标是f:\test\aa,而不是原来的e:\test\aa,这是通过相对路径建立链接与通过绝对路径建立链接的不同之处。

如果将相对路径建立的链接单独移到新位置,而不保持原有的目录结构,会造成无法访问,例如:

    E:\test>mklink /d bb aa

    E:\test>xcopy bb f:\bb /b

如果此时在f:下建立一个目录aa,则bb就指向f:\aa了。

拷贝链接的时候,还可以对链接改名,例如:

    E:\test>mklink /d bb e:\test\aa

    E:\test>xcopy bb f:\cc /b

将在f:产生一个名为cc的链接,指向e:\test\aa。如果f:下已经有一个名为cc的正常文件夹,命令执行之后将会将原来的正常文件夹变成链接。

文件软链接与d型链接有着类似的性质,通过xcopy命令同样可以实现跨分区拷贝。

文件硬链接无法实现跨区拷贝,拷贝过去的副本与目标不再保持链接关系。

j型链接无法实现保持链接关系的复制,如果用xcopy ... /b命令,将拷贝生成一个空文件夹,如果不加参数/b,将创建目标的副本,都与目标不再保持链接关系。

 

五、对目标进行操作的效果

对文件软链接、d型和j型目录链接来说,对目标移动、重命名和删除都会造成链接失效。

而文件硬链接则不同,硬链接与目标是对等的,也就是可以将目标反过来当做链接,链接当做目标,上篇描述的所有对链接的操作,加到目标上时,会产生相同的效果。

 

六、链接的机理分析

形象的说,软链接相当于一个特殊的文本文件,文件系统将目标的路径写入其中,对链接进行访问时,文件系统读取目标路径,将操作映射过去。当然,这种说法似乎不好解释对链接进行复制和跨分区移动时的的结果,但这不过是操作系统对特殊操作的特殊处理而已。

 硬链接则工作在文件系统的更底层,相当于文件系统给磁盘上的每个真实文件附加了一段列表,里面记录了有哪些硬链接(注意刚才说过:硬链接和目标其实是对等的,无法区分)是映射到这个真实文件的。无论将哪个硬链接改名、在分区内移动,都不改变自身与磁盘文件的映射关系,将一个硬链接删除当然也不会影响其他硬链接。

从上述分析看,无论d型还是j型链接都是软链接。Win7在系统安装时就建立了一些目录链接,都是j型链接,从一些资料看,这是为了和xp兼容。笔者没有对此详细考证过,不过由于j型链接无法移动,所以建议读者在Win7下实际使用时,一律以绝对路径建立d型链接,除非要使用微软提供的XP兼容模式。

 

七、Win7下链接的应用

微软在vista和win7下广泛使用了硬链接用来保护重要系统文件(和系统附带的各种垃圾),win7刚刚安装好的时候,基本上所有系统和程序文件都在c:\Windows\WinSxS下有一个硬链接作为备份。如果一旦系统文件丢失造成系统出现问题,可以使用sfc /scannow命令找到winsxs中的备份,重新在相应位置建立硬链接,完成对系统的修复,这样提高了系统稳定性,又不多占用c盘空间。不过微软自作多情,把系统里的大量垃圾也都如此保护了起来(例如驱动备份、media player、游戏等等),这些垃圾占用了大量空间,但直接删除也不能释放c盘空间,给系统优化带来了巨大障碍。由于硬链接的特性(不能跨分区移动),网上流传最广的系统优化方法(将winsxs移动到其他分区)是完全错误的,给c盘增加不了多少空间,但占用其他分区的空间却一点不少,而且很容易给系统带来问题。建议读者使用笔者整理的优化方法,虽然有点麻烦,但可以安全的释放空间1.5G,而且相信能看懂本文的网友都能够学习使用。

此外j型链接在win7系统中也有不少,例如为与xp保持兼容而建立的C:\Documents and Settings目录就是一个j型链接。进入命令行工具,在c盘位置输入:

C:\>dir /a

显示的文件列表中就有这样一条:

2009/07/14  13:08    <JUNCTION>     Documents and Settings [C:\Users]

说明它是指向C:\Users目录的j型链接。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多