Total Pageviews

Wednesday, 20 February 2013

windows系统下的文件夹链接功能-mklink/linkd

vista及以上系统的mklink命令可以创建文件夹的链接(感觉像是文件夹的映射)。因为是从底层实现文件夹链接,所以这个链接是对应用程序透明的。

(windows 2000,xp,server 2003的相应功能是linkd,这里只说说mklink)
比如,我有一个文件夹叫C:\Program Files,但是c盘空间不多了,就想把一些应用程序转移到d盘,但是直接剪切过去肯定行不通,应用程序会报错,所以首先把C:\Program Files文件夹整个移动(剪切)到d盘,再执行命令:

mklink /j "C:\Program Files" "D:\Program Files"

这样c盘下面就会多出一个带快捷方式图标的文件夹,全称就是"C:\Program Files",双击进去其实就转到了D:\Program Files。

而C:\Program Files这个文件夹是对应用程序透明的,也就是说,除了windows自己,应用程序并不知道C:\Program Files下面的东西其实已经转移到d盘了,还当它们仍然在c盘。这样就不影响原来C:\Program Files下的应用程序的使用了。



1,上面建立的链接属于软链接(/j),还有符号链接(/d)和文件的硬链接(/h)。

符号链接和软链接大致相同,区别在于,软链接是绝对路径链接,而符号链接允许相对路径的链接。

比 如,分别创建c:\data\tmp的符号链接c:\1和软链接c:\2,那么c:\1指向的就是同级文件夹下的data文件夹下的子文件夹tmp,而 c:\2指向的是c:\data\tmp这样的绝对路径。影响就是,如果把c:\1和c:\2这两个文件夹移动到d盘,那d:\1的链接就失效了,而d: \2仍然有效。

文件的硬链接是对文件创建的链接,比如对c:\data\1.txt创建链接c:\data\2.txt,那么这两个文件就是同一个文件的两个等价别名了,相当于是指向同一个硬盘存储空间的两个指针,删除其中任何一个都不影响另一个文件。但是限制就是这种链接不能跨分区。

2,软链接和符号链接不能跨磁盘。

3,这个功能必须是在ntfs文件系统上才能使用。

4,这个功能在实际应用中非常好用,比如配合dropbox,可以很方便的同步任意文件夹。