博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

itlanger's blog

itlanger.cublog.cn
linux软链接和硬链接
Hard link and Soft link(symblic link) 是很容易搞混的。 最近在看到文件系统的实现的时候竟然发现这个概念还是很模糊。 所以这里总结一下吧。

链接就是一种在共享文件和目录项之间建立联系的方式。 Linux中分为硬链接和软链接。

  • 硬链接:说得直白一点,硬链接就是一个文件的多个文件名(或者多个引用)。
    • 创建硬链接: ln file1 file2 ,这样file2就指向了file1所指向的文件的inode. 他们之间没有区别,因此也可以说file1是file2的硬链接.此时file1,file2的链接计数都变成2了。 当我们更改file1或者file2的内容时,它们的状态是同时被改变的(本来file1,file2指向的是同一个文件嘛!), 当然删除file1,或者file2 对另外一个不影响。kernel只是会将链接计数(inode.i_nlink)减1。
    • 你也可应用ln existingpath newpath来建立硬链接。 这时只创建newpath中的最后一个分量(即filename),而且newpath前面的部分必须存在。 existingpath所指向的文件也必须存在,否则出错。
    • 硬链接的限制:1. 硬链接不能跨越文件系统 2. 只有超级用户才可以创建指向目录的硬链接。

  • 软链接(符合链接): 符合链接就是一个快捷方式, 与硬链接之间共享inode不同,软链接与原文件之间使用不同的inode,他们之间不是等同的关系。 符号链接实际上是一种特殊的文件类型,这种文件包含了另一个文件的任意一个路径名。这个路径名指向位于任意一个文件系统的任意文件,甚至可以指向一个不存 在的文件。系统会自动把对符号链接的大部分操作(如读、写等)变为对源文件的操作,但某些操作(如删除等)就会直接在符号链接上完成。
    • 创建符号链接: ln -s file1 file2 ,这样file2就指向了file1, 此时file1的链接计数并不增加。同时在修改file1后,file2的修改时间不会像硬链接一样同步更新(仅仅是一个快快捷方式嘛!)。 在删除file1后,对file2的读写等操作系统就会出错说找不到文件了。文件已经被删除了。
    • 符号链接克服了硬链接的缺点: 可以跨越文件系统,可以创建指向目录的链接。
    • 创建目录链接: ln -s existingpath newpath

发表于: 2008-05-10,修改于: 2008-05-10 10:20,已浏览95次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.02818