注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Tsecer的回音岛

Tsecer的博客

 
 
 

日志

 
 

linux下符号链接及硬链接  

2012-09-13 23:58:29|  分类: Linux系统编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
一、文件链接
两个都是连接文件的方法,使用符号链接需要在ln命令中添加-s参数,虽然都是使用ln命令,但是它们在内核中使用的是两个不同的系统调用,分别对应内核的sys_link和sys_symlink两个函数。
二、符号链接
在符号链接中,ext2文件系统会会这个文件创建一个inode节点,而这个inode节点中将会保存传入的符号的路径名称。对于常规的文件,它的inode使用经典的三级引用模型,这个存储单位为
struct ext2_inode_info {
    __le32    i_data[15];
这个i_data保存的本来是13个1级文件,1个2级,一个三次间接索引。如果说一个符号链接中输入的字符串长多小于sizeof i_data=60个字符,符号字符串的地址就可以直接放在这里。反过来说,如果大于这个阈值,那么需要分配需要的页面数。
三、硬链接
对于硬链接来说,一个文件并没有自己的inode,它只有一个directory entry,它的inode直接索引到目的文件的inode。而inode结构中保存有文件的元数据,例如文件的修改时间、创建时间等内容。
但是inode中会保存自己的引用计数,当删除一个文件时,它会减少文件的引用计数,只有当计数递减到零的时候才会真正删除inode,所以如果建立了硬链接,连接建立之后,源文件和连接文件本质上是没有区别的。
四、引申的一些区别
而共享inode也会带来一个限制,那就是不能再不同分区建立硬链接,因为这里是一个直接链接,该文件系统不能解析自己不识别的文件系统上的inode节点,它的超级块也没有保存inode信息,因为dentry中保存的只是inode的编号,所以我们不能找到另一个分区上的inode编号。
反过来看符号链接,它真正保存的只是一个字符串,当连接建立之后,源和目的之间是没有必然联系的。当删除目的文件之后,源文件依然存在。或者符号链接建立开始的时候目的是一个文件,之后修改目的文件为目录,符号的源就会对应的变换为目录。
还有一点,ln中传递的字符串会被原封不动的保存在硬盘中,所以对于目标使用绝对路径还是相对路径是不同的,并且这种格式会一直存在。所以如果希望当文件夹变化后符号链接依然可以使用,最好使用相对路径,否则用绝对路径。
  评论这张
 
阅读(455)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017