Linux中的硬链接和软链接

Linux中的文件有两种数据:

用户数据

元数据(metadata)

用户数据就是数据block。

元数据包含inode、用户名、时间,大小等信息。

其中inode是文件的唯一标识。

//创建一个硬链接
ln 葵司.avi Java学习第一课.avi
//查看一下文件的信息
1048578 -rw-r--r-- 2 root root 0 Feb 24 03:04 Java学习第一课.avi
1048578 -rw-r--r-- 2 root root 0 Feb 24 03:04 葵司.avi
//这两个文件的inode号一样,根据上面的定义,实际上是一个文件
//这里我们举个例子来说明一样
//孙悟空有很多名字,比如说,孙行者,齐天大圣,弼马温
//当年如来把孙悟空压在了五指山下时候
//孙行者,齐天大圣,弼马温都在五指山下
//因为它们都是孙猴子的名字
//所以,这里我们对葵司.avi写入一些东西,那么看Java学习第一课.avi也应该会出现一样的内容
vi 葵司.avi #写入1234
more Java学习第一课.avi
#1234
//现在菩提老祖说,你弃道从佛,孙悟空这个名字你就不要用了。
//那么现在。孙猴子是不是死了,从世界消失了。
//显然没有,只是名字少了一个而已。
rm 葵司.avi
ls -il
#1048578 -rw-r--r-- 1 root root 5 Feb 24 03:13 Java学习第一课.avi
1048578这个还在,说明文件还在。
//Linux删除具体的机制是什么呢?
//文件接删除的时候,系统调用会检查inode link count的数值,
//如果他大于等于1,那么inode不会被回收。因此文件的内容不会被删除。
//原来inode link count是2
//删掉一个还剩1,所以文件内容不会被删除,数据块还在

å¾ 1. éè¿æ件åæå¼æ件

上图是通过文件名查看文件内容的方式,先文件名,然后是其inode,然后找到inode索引的数据块。

//创建一个软链接
ln -s 葵司.avi 葵司quick.avi
ls -li
#1048578 -rw-r--r-- 2 root root  5 Feb 24 03:13 Java学习第一课.avi
#1048578 -rw-r--r-- 2 root root  5 Feb 24 03:13 葵司.avi
#1048589 lrwxrwxrwx 1 root root 10 Feb 24 03:30 葵司quick.avi -> 葵司.avi
发现inode号变了,我们知道inode号是文件的唯一标识。
inode号一变,就说明是一个全新的文件

å¾ 2. 软é¾æ¥ç访é®

软链接文件找到inode,然后找到数据块

数据块里面存的是原文件的信息

再通过原文件找到原文件的inode号。

所以如果删了原文件,那么根据这个文件建立的软链接也将会失效了。

rm 葵司.avi
more 葵司quick.avi
#more: stat of 葵司quick.avi failed: No such file or directory

最后是一些总结:

硬链接:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接:

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

硬链接由于不生成新文件,不现实原文件路径(只能通过inode去找),所以安全,节省空间。

但是我们一般使用的时候,还是软链接多。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69904754/viewspace-2636814/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69904754/viewspace-2636814/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值