您的位置:首页 > 其它

如何在NTFS文件系统中创建文件的Link

2007-12-18 23:24 651 查看
大部分朋友可能知道UNIX提供了创建文件的Link的功能,而用过Windows的NTFS文件系统所支持的Link功能的朋友可能就没有那么多了(注意我说的不是Shortcut)。今天正好由于工作原因研究了一下相关内容,整理一下分享出来。本文简单介绍如何在Windows系统中使用NTFS文件系统所提供的功能创建Link。NTFS支持两种Link,Junction Point和Hard Link。

Junction Point

Junction Point是NTFS文件系统中Reparse Point的一种类型,支持对Folder的链接。创建junction point可以使用Sysinternals所提供的Junction.exe工具来创建,其命令格式为:
  junction  
 (Sysinternals工具可以在http://www.microsoft.com/technet/sysinternals/default.mspx 下载)比如我们可以创建一个对于C:/temp的Link,名为C:/Link_Temp:
C:/>junction C:/Link_Temp C:/temp   Junction v1.03 - Win2K junction creator and reparse point viewer Copyright (C) 2000-2002 Mark Russinovich Systems Internals - http://www.sysinternals.com   Created: C:/Link_Temp Targetted at: C:/temp
 那么,就可以像普通Folder一样的对Link_Temp进行操作了:
C:/>dir C:/link_Temp  Volume in drive C is Vista  Volume Serial Number is 0C8F-86E1    Directory of C:/link_Temp   07/15/2007  11:48 AM              . 07/15/2007  11:48 AM              ..
显然Shortcut是做不到这一点的。如果我们不需要这个Link了,可以随时键入rmdir C:/link_temp来删除这个Link,即使C:/Temp不为空。关于Conjunction Point的详细内容可以参看:http://en.wikipedia.org/wiki/NTFS_junction_pointWindows 2000 Resource Kit中也提供了一个类似工具用于创建Conjunction Point,可以参考下面这篇文章:http://msdn2.microsoft.com/en-us/library/aa363878.aspx在Windows Vista上提供了更强大的Symbolic Link功能,对文件也可以使用,具体可以参看:http://msdn2.microsoft.com/en-us/library/aa363878.aspx 

Hard Link

 Hard Link和Conjunction Point不同的地方在于,Hard Link类似对实际文件内容的一个Reference,有几个不同的文件名对其引用那么就存在几个Reference。当所有的Reference都被删除的时候,文件内容则被删除。可以把通常情况下的文件名认为是Hard Link的一种特殊形式,即只有一个File Name引用实际的文件内容。任何对所有引用的文件名的操作都会改变文件内容。创建Hard Link可以通过fsutil(在XP/2003/Vista上存在)来创建,格式如下:
  fsutil hardlink create  
 
C:/>fsutil hardlink create test_1.txt test.txt Hardlink created for C:/test_1.txt <<===>> C:/test.txt   C:/>fsutil hardlink create test_2.txt test.txt Hardlink created for C:/test_2.txt <<===>> C:/test.txt
 
C:/>fsutil hardlink create test_1.txt test.txt Hardlink created for C:/test_1.txt <<===>> C:/test.txt   C:/>fsutil hardlink create test_2.txt test.txt Hardlink created for C:/test_2.txt <<===>> C:/test.txt
 大家可以自己试验一下,看删掉原来文件test.txt之后,test_1.txt和test_2.txt是否还存在,内容是否还存在。答案是肯定的。关于Hard Link的具体内容可以参看:http://en.wikipedia.org/wiki/Hard_link   

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1741265
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: