代码改变世界

hard link soft link

2018-03-07 22:45  懦米虫  阅读(423)  评论(0编辑  收藏  举报

tg 小伙伴的解释

 

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
鸟哥的   passwd-hd是硬连结  passwd-so 符号连结

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
有hard link 你删除源文件  不会删除inode 和block data

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
所以你cat hard link还是会有数据显示的 文件还存在

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
除非你删除所有hard link

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
那删除源文件后  inode指向的block都变了?

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
没变 inode 和block data 都不变

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
soft link是会新建inode 和block data的 block data指向源文件

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
所以你cat soft link 不会显示数据了

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
soft link - inode - block data - file - inode - block data

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
是这样的寻找数据过程 你删除了 file 中间就断了 所以不会显示

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
本来只有一个 然后创建了一个hard link  其实还是只有一个  ;然后删了源文件  还有一个 那其实是有两个? 可是文件又没增多……

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
hard link -  inode - block data

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
hard link 的inode 和file的inode 一样的

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
不知道你能不能明白

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
那文件确实是多了一个么

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
说白了就是寻找数据的过程不一样导致的结果不同

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
/没有多

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
文件还是原来那个

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
有hard link 你只能删除file 不能删除inode 和block data

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
懂了吧

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
file 和block data 是什么关系

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
这样的关系

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
删除 file. 它的inode和block. data 都不会删除 因为有hard link

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
这样你再看图就能看懂了

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
file 怎么会指向inode呢…… 这个file 又不是目录

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
file怎么就不能有inode

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
目录也属于file

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
block data 和file是不是挂载的关系

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
你去看看Linux文件系统。。。

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
感觉跟你解释也是解释不通。

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
看的就是文件系统……

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
没看到有file这个说法

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
file就是文件

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
翻译过来

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
那你看到什么说法?

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
那你告诉我目录和文件的区别是

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]


懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
我 的理解是file 和block data 是同一个东西

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
目录就是文件 这我明白

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
根本不是同一个东西

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
一个file 可以占用1个 也可能是100w个block data

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
file只是记录数据存放信息的一个东西而已

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
记录 inode 占用的block data 等信息

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
按照你的理解 一定不能理解 为什么linux删除1m 和100g的文件 都是一秒就删除了 ?

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
明白了……file 记录的是inode的信息

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
不是block data 的集合

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
这就是为什么数据还能恢复的原因 实际上 数据还存在block data里面

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
只要没有被其它文件占用 就能恢复

懦米虫, [07.03.18 22:36]
[Forwarded from 懦米虫]
懂了  谢谢你啊 解释了半天😳

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
不客气 正好有空

懦米虫, [07.03.18 22:36]
[Forwarded from David Rossi「丐帮长老」]
soft link会自己创建inode和 block data

 

硬链接(hard link)和符号连接(symbolic link)的区别:

通俗一点理解,可以把硬链接当成源文件的副本,他和源文件一样的大小但是事实上却不占任何空间。
符号链接可以理解为类似windows一样的快捷方式。

一、链接文件
链接文件有两种方式,符号链接和硬链接。

1、符号链接文件
符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,也可以链接不同文件系统的文件。甚至可以链接不存在的文件,这就产生一般称为“断裂”的问题(现象),还可以不断的循环链接自己。
用ln -s 命令可以生成一个符号链接,如下所示:
#ln -s source_file  softlink_file
在对符号链接进行读写操作的时候,系统会自动把该操作转换为对源文件的操作。但是删除链接文件时,系统仅仅删除符号链接文件,而不删除源文件本身。

2、硬链接文件
硬链接的命令是:
#ln existfile  newfile
硬链接文件有两个限制
1)、不允许给目录创建硬链接
2)、只允许在同一文件系统中的文件之间才能创建链接

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

二、两者之间的区别
硬链接是通过索引节点(inode index)来进行链接的。在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给他分配一个编号,称为索引节点号(inode index)。

在linux中,多个文件名指向同一索引点是存在的。一般这种链接是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,起到防止“误删”的功能。
因为对应目录的索引节点有一个以上的链接,只删除一个链接并不影响索引节点本身和其他的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,至此文件才被真正删除。

符号链接文件有点类似于windows的快捷方式。他实际上是特殊文件的一种。在符号链接中,文件实际上是一个文本文件,他包含了另一个文件的位置信息。

三、体会
符号链接(symbolic link)在建立的时候建立了一个新的inode,并记录了指向源文件inode的路径。所以symbolic的inode number跟原始档案的inode number是不一样的。这也是为什么symbolic link能够跨越不同文件系统的原因。
符号链接建立了新的inode number,所以它是一个真实的文件并占有一定的磁盘空间。另外对symbolic link的操作除了删除都会直接对源文件进行操作。
硬链接(hard link)并没有新建立inode,而是新建了一个内容以及inode number、hard link文件名和其他相关资讯的一个directory entry,所以hard link的inode number跟源文件的inode number是一样的。因为一个文件系统有着相同的inode number,所以hard link是不可以跨文件系统创建的。也可以将hard link理解为不是一个文件,把它看成是同一个inode的别名,建立hard link后他和源文件互为别名,删除其中任何一个,inode都不会释放。只有指向同一inode的文件名都删除后,inode才释放。hard link实际上是不占空间的。