链接文件分为两种:一种是符号链接(Symbolic?Link,国内通常叫软链接),另外一种是硬链接(hard Link)。默认情况下,ln命令产生硬链接。ln -s(小写)命令产生符号链接
硬链接与软链接的通俗理解:
软链接:
1.可以理解成windows中的快捷方式(链接的是路径,链接文件中包含的是另一个文件的位置信息) ,要是原文件不存在了(或者原文件移动到其他目录下了),那么这个软链接文件也没有存在的意义了相当于个空指针。(你朋友要你发一个软件,但是你发送了该软件的快捷方式,打开快捷方式找不到源文件所有没有用)
2.可以链接目录或者文件
3.对软链接文件进行修改,源文件也会同步修改。
硬链接:
1. 链接的是索引节点(inode),硬链接文件inode值相同(在Linux的文件系统的文件不管是什么类型都给它分配一个indoe号),所以硬链接文件不占用磁盘空间.相当于创建一个别名.(与windows相比:硬链接类似复制,但与复制不同的是存在同步机制,一处的更改会同步到另一处,删除一处不会影响另一出.而windows更改不会同步到另一处)
补充:1)Linux系统识别的是索引节点(inode),也就是说索引节点才是文件的唯一标识而非文件名,文件名只是为了人们的记忆和使用。
? ? ? ? ?2)大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成:
- 目录项:包括文件名和inode节点号。(可以通过命令ls -i查看inode号也可以通过stat,stat还包括很多很全的信息)
- Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。
- 数据块:包含文件的具体内容。
?实际上文件的打开 在系统内部分为三部:
? ?step1:找到文件名对应的inode号
? ?step2:通过inode号找到文件的基础信息包括数据块的指针
? ?step3:通过数据块的指针找到文件数据所在的block,读出数据。
2.有两个限制:目录不能创建硬链接;只能在同一个文件系统中进行硬链接.
3.对源文件进行修改或删除,硬链接文件会同步修改.但删除硬链接的源文件,硬链接文件仍然存在.只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放。也就是说,文件才会被真正删除。每个文件被创建了就已经有一个链接了就是自己。
|