硬链接和符号链接

硬链接和符号链接,第1张

Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln 命令产生硬链接。

通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小但是事实上却不占任何空间。

符号链接可以理解为类似 windows 一样的快捷方式。

硬连接指通过索引节点来进行连接。

在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。

在 Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。

硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

硬链接文件有两个限制

对于硬链接文件进行读写和删除 *** 作的时候,结果和符号链接相同。但是如果我们删除硬链接文件的源文件,硬链接文件仍存在,而且保留了原有的内容。

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,这个文件包含了另一个文件的路径名。

可以是任意文件或目录,也可以链接不同文件系统的文件。甚至可以链接不存在的文件,这就产生一般称为“断裂”的问题(现象),还可以不断的循环链接自己。

在对符号链接进行读写 *** 作的时候,系统会自动把该 *** 作转换为对源文件的 *** 作。但是删除链接文件时,系统仅仅删除符号链接文件,而不删除源文件本身。

从上面的结果中可以看出,硬连接文件 f2 与原文件 f1 的 inode 节点相同,均为 7722708,然而符号连接文件的 inode 节点不同。

通过上面的测试可以看出:当删除原始文件 f1 后,硬连接 f2 不受影响,但是符号连接 f1 文件无效

符号链接(symbolic link)在建立的时候建立了一个新的 inode,并记录了指向源文件 inode 的路径。所以 symbolic 的 inode number 跟原始档案的 inode number 是不一样的。这也是为什么 symbolic link 能够跨越不同文件系统的原因。

符号链接建立了新的 inode number,所以它是一个真实的文件并占有一定的磁盘空间。另外对 symbolic link 的 *** 作除了删除都会直接对源文件进行 *** 作。

hard link 的 inode number 跟源文件的 inode number 是一样的。因为一个文件系统有着相同的 inode number,所以 hard link 是不可以跨文件系统创建的。也可以将 hard link 理解为不是一个文件,把它看成是同一个 inode 的别名,建立 hard link 后他和源文件互为别名,删除其中任何一个,inode 都不会释放。只有指向同一 inode 的文件名都删除后,inode 才释放。hard link 实际上是不占空间的。

C:\Windows\system32mklinkCreates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target /D 创建一个目录的符号链接。默认为文件的符号链接。/H 创建符号链接,而不是一个硬链接。/J 创建目录连接。link 指定新符号链接的名称。target 指定路径(相对或绝对的),新的链接指。通常情况下,我们可以使用选项/ D来创建符号链接。注意:您需要管理员权限才能运行此命令E世博: 世博: 世博: 要创建一个符号链接名为MyDocs从根目录到\Users\User1\Documents 目录,键入:mklink /D \MyDocs \Users\User1\Documents 我们也可以使用junction.exe或linkd.exe在Win7旗舰版中创建符号链接,你可以尝试一下后,把他们到C:\ Windows \ System32下,如果你有兴趣。

格式:MKLINK [[/D] | [/H] | [/J]] 链接名称 目标

语法介绍:

win+r-->cmd -->输入 mklink

命令区别:

/d 给目录创建符号链接,简称符号链接、软链接;

/h 创建硬链接,简称硬链接;

/j 给目录创建联接点,简称软链接。

当没有上面3个命令符时,创建是文件软链接!文件类型:.symlink

注意:

路径,建议使用绝对路径,必须使用英文双引号将路径括起来;

空格,命令之间必须有空格

第一步:创建目录链接

第二步:查看test目录大小

第三步:分析

很明显,大小为7个G,这个地方很具有迷惑性,但是到底有没有占用D盘的空间呢?

目录链接创建前后,D盘空间未发生变化

第四步:结论

经测试,并没有占用D盘空间!

第一步:创建目录链接

还用上面的目录链接

第二步:测试(使用硬链接)

测试一:

将D:\test[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv链接到e:\test.mkv

命令:

硬链接创建失败:

测试二:

将D:\test[ReinForce] Yosuga no Sora (BDRip 1920x1080 x264 FLAC)[ReinForce] Yosuga no Sora - Akira arc 02 (BDRip 1920x1080 x264 FLAC).mkv链接到f:\test.mkv

命令:

硬链接创建成功:

第三步:结论

由上面的测试,可以证实:目录链接只是对源目录的引用(指向)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8051882.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存