熟练使用NTFS的文件链接技术
硬链接和软链接介绍:
硬连接指向的是i节点(iNode),而软连接指向的是路径(Path) ,又称符号链接。
硬链接可理解为对i节点的引用,最初的文件名与所有的硬链接地位是对等的,比如为文件a建立了硬链接b、c、d。那么a、b、c、d之中只要有一个文件未删除,这个文件就可通过未删除的名称访问的。你也可以认为每个文件都可认为至少有一个硬链接,就是说a也是一个硬链接。
软链接特性上有些类似于快捷方式,比如为原文件a建立了软链接b、c、d。删除b、c 或d访问到a,但是只要删除了a,软链接就不可用了。但是Windows下的快捷方式只能在资源管理器中有用,它只是一个.lnk文件。如果是一个目录的快捷方式,它是不能通过cd命令或路径进入的。
硬链接文件有两个限制(Unix/Linux和Windows均如此):
1、不允许给目录创建硬链接;
2、只有在同一文件系统中的文件之间才能创建链接。
本文的内容关键在Windows下如何建立软硬链接。
熟悉过Unix/Linux都应该知道,Unix/Linux用ln建立硬链接,ln -s建立软链接,那么Windows下是如何做的呢?
xp和win7采用不同的方式,其中xp方式如下:
一、只能适用于NTFS文件系统;
1)使用命令fsutil hardlink创建硬链接;
语法:
fsutil hardlink create NewFileName ExistingFileName
参数:
create 建立现有文件和新文件之间的NTFS硬链接。NTFS硬链接与POSIX硬链接相似;
NewFileName 指定要将创建硬链接的文件;
ExistingFileName 指定要从中创建硬链接的文件。
如果你想在自己的程序里创建硬链接,那也是很容易的,只需要一个很简单的Win32 API函数:
BOOL CreateHardLink(
LPCTSTR lpFileName, // link name name
LPCTSTR lpExistingFileName, // target file name
LPSECURITY_ATTRIBUTES lpSecurityAttributes
);
2)使用junction外部命令创建软链接。
NTFS只支持对目录的软链接,微软把它称作junction。但是对于文件的软链接,微软也有提供了类似的解决方案,那就是快捷方式(Shortcut/.lnk文件)。不过软链接和快捷方式不是一个层次上的东西,前者是底层文件系统的功能,后者是应用层的功能。在http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx下载junction.exe。
junction的命令语法是:
junction LinkDirectory ExistingDirectory
例如:junction D:\link C:\windows
将为C:\windows建立一个链接目录D:\link,C和D分区都要是NTFS格式,在资源管理器和dir显示中D:\link都以目录的形式存在的。D:\link就像是C:\windows的一个引用一般,删除 D:\link目录中的内容也就是删除了D:\windows中的内容,但删除D:\link本身是不会影响到C:\windows的。
相应的,在程序中也有一个API函数CreateSymbolicLink支持创建软链接,不过来得太晚了,要在Windows Vista和Windows Server 2008上才支持,先还是别想了。API原型是:
BOOL WINAPI CreateSymbolicLink(
__in LPCWSTR lpSymlinkFileName,
__in LPCWSTR lpTargetFileName,
__in DWORD dwFlags
);
参数:
lpSymlinkFileName 要创建的符号链接名称;
lpTargetFileName 符号链接所对应目标的名称;
dwFlags 标识目标是文件还是目录,取值0x0代表是文件,SYMBOLIC_LINK_FLAG_DIRECTORY或0x1代表是目录。
二、借助于更为方便的工具。
使用LinkShellExtension右键扩展工具:http://t.cn/8s0ssLt(xp汉化版本)
Win7中的方法:
一、使用mklink命令;
二、也可使用LinkShellExtension win7版本,用户可google下载。
熟练使用NTFS的文件链接技术的更多相关文章
- 以程序的方式操纵NTFS的文件权限
Windows NT/2K/XP版本的操作系统都支持NTFS格式的文件系统,这是一个有安全性质的文件系统,你可以通过Windows的资源管理器来设置对每个目录和 文件的用户访问权限.这里我就不对NTF ...
- linux文件链接
我的github,欢迎关注,分享知识与技术 链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(HardLink)和软链接(Soft Link), ...
- 前端Demo常用库文件链接
<!doctype html><html><head> <meta charset="UTF-8"> <title>前端 ...
- .net环境下ckeditor与ckfinder中文文件链接乱码的问题
.net环境下ckeditor与ckfinder中文文件链接乱码的问题 将ckfinder.js中的getUrl:function(){return this.folder.getUrl()+enco ...
- Linux链接库四(多个库文件链接顺序问题)
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误: (.text+0x13): undefined reference to `func' 关于unde ...
- 挑战以Dropbox为代表的传统“同步网盘”,Seafile推出“分布式文件同步技术”打造的私有云服务
挑战以Dropbox为代表的传统“同步网盘”,Seafile推出“分布式文件同步技术”打造的私有云服务#36氪开放日# 其他 JasonZheng • 2012-04-07 15:14 来自36氪开放 ...
- Seafile 推出 “分布式文件同步技术” 打造的私有云服务
近两年来 Dropbox 等云储存服务迅速窜红,各大巨头纷纷推出自家的云储存服务(苹果的 iCloud, 微软的 SkyDrive, Google 即将推出的 GDrive),国内也有类似的服务(金山 ...
- 转: linux文件链接(软链接和硬链接)
链接:一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic l ...
- Linux文件链接hard link与symbolic link
Linux中文件链接有两种方式,一种是hard link,又称为硬链接:另一种是symbolic link,又称为符号链接.要区分两者的不同要回顾Linux常用的ext2文件系统.这种文件系统使用in ...
随机推荐
- Dubbo集成步骤
dubbo协议实现与webservice一样的效果,用于服务调用之间的接口.dubbo可在中间实现真正意义上的中间调用管理,是一个中间管理系统. demo:http://www.devnote.cn/ ...
- 一个文字无缝滚动的jQuery插件
直接上代码吧 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...
- 【Python爬虫实战--2】时间戳转换为指定格式日期
摘自:http://www.2cto.com/kf/201406/311477.html (1)方法: 方法一: 利用localtime()转换为时间数组,然后格式化为需要的格式,如 timeStam ...
- a标签中使用img后的高度多了几个像素
a元素下有一个匿名文本,这个文本外有一个匿名行级盒子,它有的默认vertical-align是baseline的,而且往往因为上文line-height的影响,使它有个line-height,从而使其 ...
- IE6下a标签失效(背景穿透)
background:fixed url(about:blank);有时候做感应区域的时候在ie6下不给背景就会感应不到,比如说当鼠标移到图片的左半边部分,鼠标手势变成向左的箭 头,比如说有些时候a标 ...
- linux配置永久ip不生效解决方法
本文原文来自 http://blog.csdn.net/zymx14/article/details/51472239 linux下使用ifconfig eth0 ip地址可以设置ip地址 ,命令为: ...
- sql随机
想从MySQL数据库中随机取一条或者N条记录时,最好把RAND()生成随机数放在JOIN子查询中以提高效率. SELECT id FROM table ORDER BY RAND() LIMIT n; ...
- 《JavaScript高级程序设计》读书笔记 ---if语句
if语句 大多数编程语言中最为常用的一个语句就是if 语句.以下是if 语句的语法:if (condition) statement1 else statement2其中的condition(条件)可 ...
- 使用非 GUI 模式运行 JMeter 压力测试
使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源.使用命令jmeter -n -t <testplan filename> -l <list ...
- HDU 5773 The All-purpose Zero
这题想了1个多小时想不出来...方法真是精妙... 官方题解:0可以转化成任意整数,包括负数,显然求LIS时尽量把0都放进去必定是正确的.因此我们可以把0拿出来,对剩下 的做O(nlogn)的LIS, ...