zoukankan      html  css  js  c++  java
  • 熟练使用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函数:

    1 BOOL CreateHardLink(
    2   LPCTSTR lpFileName,                         // link name name
    3   LPCTSTR lpExistingFileName,                 // target file name
    4   LPSECURITY_ATTRIBUTES lpSecurityAttributes  
    5 );

    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原型是:

    1 BOOL WINAPI CreateSymbolicLink(
    2   __in  LPCWSTR lpSymlinkFileName,
    3   __in  LPCWSTR lpTargetFileName,
    4   __in  DWORD dwFlags
    5 );

    参数:
    lpSymlinkFileName 要创建的符号链接名称;
    lpTargetFileName 符号链接所对应目标的名称;
    dwFlags 标识目标是文件还是目录,取值0x0代表是文件,SYMBOLIC_LINK_FLAG_DIRECTORY或0x1代表是目录。

    二、借助于更为方便的工具。

    使用LinkShellExtension右键扩展工具:http://t.cn/8s0ssLtxp汉化版本)

    Win7中的方法:

    一、使用mklink命令;

    二、也可使用LinkShellExtension win7版本,用户可google下载。

  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/cpper-kaixuan/p/3532227.html
Copyright © 2011-2022 走看看