熟练使用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 ...
随机推荐
- Storm-0.9.0.1安装部署 指导
可以带着下面问题来阅读本文章: 1.Storm只支持什么传输 2.通过什么配置,可以更改Zookeeper默认端口 3.Storm UI必须和Storm Nimbus部署在同一台机器上,UI无法正常工 ...
- 处理html页面元素工具类(HtmlAgilityPack.dll)的使用
下载地址:http://htmlagilitypack.codeplex.com/ 1.添加HtmlAgilityPack.dll引用(引用类using HtmlAgilityPack;). 2.简单 ...
- c#笔记之启动新线程
可已通过下面方法来启动一个新线程并执行相应的方法 new Thread(new ThreadStart(new Action(() => { ...
- linux 查看日志
第一步 :提交自己目录文件(先到自己目录下载最新文件-->合并-->提交到临时目录temp-->在提交到master总目录-->其他关联master远 程分支的目录.就可以pu ...
- 4、MySql的存储过程
C:\Program Files\MySQL\MySQL Server 5.1\bin 1.1 定义无参数的存储过程//定义语句结束用//delimiter //create procedure pr ...
- asp.net分页代码(教你怎么实现)
直接上代码: css部分代码 .pageCss { float: right; width: auto; height: 30px; line-height: 30px; margin-right: ...
- IOS CrackMe 破解学习
一直在看别人如何破解一个app,下面自己也尝试着学习怎么去破解一个app的密码,下面是完整的过程. 准备工作: 一台mac或者pc安装了ssh客户端 一台越狱的iphone iphone上安装了ope ...
- 使用rdesktop远程连接Windows桌面
之前使用的是KDE下的krdc.该程序的Grab Keys功能存在bug,导致Alt+TAB大多数时候不能被捕捉,从而无法使用键盘切换窗口.不过,其全屏功能是正常的,在多显示器的情况下,全屏只在一个屏 ...
- hitTest:withEvent:方法流程
此方法可实现点击穿透.点击下层视图功能. 一. hitTest:withEvent:调用过程 iOS系统检测到手指触摸(Touch)操作时会将其放入当前活动Application的事件队列,UIApp ...
- sysadmin_basement
基本部分 1. 系统硬件 1.1. 主板 获取序列号 $ sudo dmidecode -t system |grep -i Serial Serial Number: CNU9032T3N 获取厂商 ...