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
阅读(762) | 评论(0) | 转发(0) |