读书笔记:Windows下如何创建软链接和硬链接(类linux ln)
首先简单理解一下硬链接和符号(软)链接的区别(此文中的符号链接和软链接指同一概念):
硬连接指向的是节点(inode),而软连接指向的是路径(path) 。
最初的文件名与所有的硬链接地位是对等的,比如为文件 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 下是如何做到的呢?
一: Windows 下创建硬链接,只能适用于 NTFS 文件系统。使用命令 fsutil hardlink
语法
fsutil hardlink create NewFileName ExistingFileName
参数
create 建立现有文件和新文件之间的 NTFS 硬链接。NTFS 硬链接与 POSIX 硬链接相似。
NewFileName 指定要将创建硬链接的文件。
ExistingFileName 指定要从中创建硬链接的文件。
当然,如果你想在自己的程序里创建硬链接,那也是很容易的,只需要一个很简单的 API 函数:
BOOL CreateHardLink(
[...]
Read the rest of 读书笔记:Windows下如何创建软链接和硬链接(类linux ln)