占用问题
可以这样测试
给硬盘划分一个新分区
空间只有
GB
在这个分区的test目录里面新建了一个
GB大小的文件
此时剩余空间是
GB
用mklink命令给这个
GB大小的文件建立了一个硬连接
检查这个分区的剩余空间
还是
GB
但是如果用资源管理器看test目录的属性
会发现有
个文件
总大小是
GB(整个分区才
GB
能够容纳
GB大小的文件吗
显然不可能了)还是针对上述的例子
如果我们把原始的文件gbtxt删除以后
linktxt文件还是会继续存在的
且内容就是sourcetxt的文件内容
也就是说
我们删除gbtxt
实际上删除的仅仅是这种连接关系
文件本身还是没有被操作的
关于硬连接
最后一个需要介绍的内容是
当硬连接建立以后
硬连接双方任何一个对象被修改
都会造成对应的连接对象被修改
例如上面的例子
如果修改了linktxt
那么gbtxt文件也会同步被修改
反之亦然
这一点和SHELL层面的快捷方式不同
SHELL层面的快捷方式文件LNK仅仅是一个指示关系
修改LNK文件并不影响LNK文件指向的对象
修改LNK文件指向的对象也不会影响LNK文件
WIN新系统下的硬链接情况和使用这种技术的原因好了
基本知识介绍完了
我们来实际看看Windows目录里面对于硬连接的使用情况吧
xp的系统镜像经常看到有人抱怨
Windows\WinSxS目录占用了太多的空间
里面经常发现有同名的文件
而且这些同名的文件在Windows\System
目录下面也有存在
这是为啥呢
其实这就是硬连接导致的
Microsoft为啥这么麻烦搞这个呢
其实这样对系统的稳定性的增加非常有好处同样的文件
只需要维护硬连接关系
不需要进行多重的拷贝
这样可以节省硬盘空间如果涉及文件更新
只需要先在WinSxS目录里面下载好一个新版本
然后修改Windows\System
下面同名文件的硬连接关系
从旧版本的硬连接指向新版本的硬连接
这样就能够快速的完成文件的更新工作
而不需要进行文件的复制
速度也会快不少补丁卸载也是一样的
只需要把硬连接指向改为旧版本就可以了
没有文件替换的问题
而且建立了硬连接关系的文件之间的修改是同步的
因此只要有一方被修改了
另一方也会得到修改真相大白说了这么多
那么如何知道Windows目录的真实大小呢
有很多小工具可以使用
也可以在DOS下的第三方工具来测试
有兴趣的童鞋就自己测试吧
我的测试结果如下
对于纯净的系统测试结果如下
共有文件
个
其中
真实的文件有
个
其他
个文件都是硬连接文件
真实的文件占用了
KB的硬盘空间
而如果你用资源管理器看的话
那么会提示说占用了
KB的硬盘空间