moo*_*moo 69
符号链接:指向相同或不同卷(驱动器号)上的文件或目录,甚至指向远程文件或目录(在其路径中使用 UNC)的链接。
硬链接:仅指向同一卷(驱动器号)上的文件的链接。每个文件(文件数据)至少有 1 个硬链接(文件名)。删除所有硬链接会有效地删除文件。
结点:指向相同或不同卷(驱动器号)上的目录但不指向远程目录的链接。
假设您在 Windows Vista/7 中使用 NTFS 卷,您可以使用命令行工具 MKLINK
来创建所有三种类型的链接:
Run Code Online (Sandbox Code Playgroud)MKLINK [[/D] | [/H] | [/J]] Link Target /D Creates a directory symbolic link. Default is a file symbolic link. /H Creates a hard link instead of a symbolic link. /J Creates a Directory Junction. Link specifies the new symbolic link name. Target specifies the path (relative or absolute) that the new link refers to.
符号链接:符号链接是指向另一个文件系统对象(例如:文件/目录)的文件系统对象。
MKLINK
可用于创建符号链接。使用/D
参数创建目录符号链接。MKLINK 不检查目标是文件还是目录,甚至不检查目标是否存在!这意味着您可能会创建无效链接,例如指向文件的目录符号链接或指向不存在的文件/目录的符号链接。
符号链接可以是绝对链接或相对链接。绝对链接是指定路径名的每个部分的链接,而相对链接是相对于相对链接说明符在指定路径中的位置确定的。
绝对符号链接可以指向相同或不同卷上的文件/目录,也可以指向使用 UNC 路径的远程文件或目录。但是,相对符号链接仅限于单个卷。
创建符号链接需要提升的权限,尽管一旦创建,删除链接不需要提升的权限。
硬链接:硬链接是文件的文件系统表示,通过它多个路径引用单个文件。
MKLINK
只允许创建/H
文件(不是目录)的硬链接(使用参数)。只能为同一卷中的文件创建硬链接。
具有多个硬链接的文件只有在所有硬链接都被删除时才会被真正删除,即链接数达到零。因此,无论您是否使用,您创建的每个文件实际上都至少有一个硬链接MKLINK
。
通过引用它的硬链接访问该文件的应用程序可以立即看到对该文件的任何更改。但是,目录条目大小和属性信息仅针对进行更改的链接进行更新。
请注意,文件上的属性反映在指向该文件的每个硬链接中,并且对该文件属性的更改会传播到所有硬链接。例如,如果您取消设置硬链接上的只读属性以删除该特定硬链接,并且实际文件有多个硬链接,那么您将需要重新设置文件上的只读属性从剩余的硬链接之一将文件和所有剩余的硬链接恢复为只读状态。
结点:结点(也称为软链接)与硬链接的不同之处在于它引用的存储对象是单独的目录,结点可以链接位于同一台计算机上不同本地卷上的目录。否则,结点的操作与硬链接相同。连接是通过重解析点实现的。
MKLINK
允许创建/J
目录(甚至文件的连接(使用参数),尽管这可能应该被视为无效链接)。
可以将联结视为指向目录的符号链接的等效硬链接。联结链接不能创建到远程目录,但可以创建到相同/不同卷上的目录。
参考:
[1] 硬链接和连接点:https : //msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx
[2] 创建符号链接:https : //msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx
小智 37
NTFS 数据文件以其所有属性存储为带有 ID 的“inode”,文件名指向 inode。所有文件都有一个+硬链接。一些工具可以创建指向同一个 inode 的额外名称(硬链接),该 inode 具有指向它的名称数量的计数器。如果数字变为零,操作系统将删除该文件,即 inode。
像 LN 这样的特殊工具可以使用指向现有 inode 的文件名创建指向现有 inode 的其他文件名。请注意,所有文件属性(包括日期和时间)都与 inode 一起存储,而不是文件名。
当您希望不同的名称指向相同的数据、读取或写入时,(额外)硬链接很有用。它们节省了空间和开销。然而,它们破坏了假设不同名称指向不同数据的程序。例如,如果您通过指向单个文件的硬链接替换对重复文件的引用,那么您已经删除了所有备份!Windows 操作系统是一个程序,它假定不同的名称指向不同的位集。
硬链接必须位于相同的物理和逻辑卷上。
它们可用于:
减少路径长度,因为 Windows 只支持 256 个字符左右。
减少重复数据文件的存储空间——例如,您可以有多个完整目录树的分区的多个备份,但对于自上次备份以来未更改的文件使用硬链接。
连接点更混乱并使用重新分析点(我不明白)。它们可以指向不同的物理或逻辑卷,但它们必须位于同一台计算机上。它们显然可以像目录的符号链接一样使用,允许同一目的地的第二个名称,但仅限于一台计算机,而不仅仅是一个卷。
用于减少路径长度,或简化使用硬编码目录名称的多个程序的工作。
同样的警告,太!许多程序假定不同的名称 = 不同的文件。
然后是符号链接(可以跨网络)、快捷方式和 PIF 以及 .....
基本上,他们说只对同一卷(磁盘驱动器号)中的文件使用硬链接,仅对同一台计算机上的目录使用连接点(它们可以跨越不同的本地卷)。
Jos*_*ved 11
硬链接只是文件的另一个名称。如果你有一个名为 A.txt 的文件并且你有链接 L.txt,一旦你删除了 A.txt,你仍然可以通过 L.txt 访问它的数据。只有当两者都被删除时,文件才消失。
另一方面,您有一个所谓的软链接(如果是文件夹则是连接,如果是文件则是符号链接)。那样的话,当你删除A.txt时,文件就真的没了。删除 L.txt 对文件没有任何影响。
硬链接只能在与原始文件相同的分区上使用,软链接可以跨分区使用。
就 NTFS 而言,PS 文件和文件夹大多可以互换。
硬链接:仅适用于文件
连接:仅适用于文件夹
符号:本地卷或 UNC 路径
特征 | 文件硬链接 | 目录结点 | 符号链接 |
---|---|---|---|
适用于文件 | ??仅文件 | ?不 | ?是的 |
适用于文件夹 | ?不 | ??仅文件夹 | ?是的 |
相同的音量 | ? 是的 | ?是的 | ?是的 |
不同的音量 | ?不 | ?是的 | ?是的 |
UNC路径 | ?不 | ?不 | ?是的 |
标准用户 | ?是1 | ?是的 | ??仅限管理员 |
最好考虑将硬链接添加为:
添加附加文件名
所有文件都有 1 个文件名,但您不仅限于一个。您可以添加其他文件名。每个文件名与任何其他文件名一样真实。
换句话说:所有文件都是硬链接。它们的链接数仅为1。
如果我创建一个文件:
?????????????????
? Hello, world! ?
?????????????????
Run Code Online (Sandbox Code Playgroud)
现在我们给文件一个名字:
?????????????????
C:\Temp\Test.txt ??????>? Hello, world! ?
?????????????????
Run Code Online (Sandbox Code Playgroud)
现在我们可以向文件添加第二个名称:
mklink /H C:\Users\Frob.csproj C:\Temp\Test.txt
?????????????????
C:\Users\Frob.csproj???>? Hello, world! ?
?????????????????
^
?C:\Temp\Test.txt
Run Code Online (Sandbox Code Playgroud)
您可以删除这些文件名之一,只留下剩余的文件名:
?????????????????
C:\Users\Frob.csproj???>? Hello, world! ?
?????????????????
Run Code Online (Sandbox Code Playgroud)
并且文件还在那里。只要至少有一个链接指向该内容,该内容就会继续存在。删除最后一个链接后:文件系统将删除内容。
奖金喋喋不休
Windows 为 AppCompat 目的创建联结和符号链接;对于那些认为:
是有效的。
C:\Users>dir /as
Directory of C:\Users
04/11/2018 07:45 PM <SYMLINKD> All Users [C:\ProgramData]
04/11/2018 07:45 PM <JUNCTION> Default User [C:\Users\Default]
Run Code Online (Sandbox Code Playgroud)
在用户的配置文件文件夹中也是如此,对于希望 Windows XP 时代文件夹今天仍然存在的应用程序:
| Folder | Type | Target |
|------------------|------------|------------------------------------------------------------------| | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming |
| Cookies | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies |
| Local Settings | <JUNCTION> | C:\Users\Ian\AppData\Local |
| My Documents | <JUNCTION> | C:\Users\Ian\Documents |
| NetHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent |
| SendTo | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo |
| Start Menu | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu |
| Templates | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates |
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
69857 次 |
最近记录: |