链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方式,Linux中又包含两种链接:硬链接和软链接(符号链接)
前提:在linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个唯一的编号,称为索引节点号inode。文件属性保存在索引节点里,在访问文件时,索引节点被复制到内存,从而实现文件的快速访问
-
符号链接
符号链接又叫软链接,和原文件不是一个文件。例如Windows的快捷方式,如果原始文件被删除,所有指向它的符号链接也就都被破坏了。符号链接记录的是目标的path。符号链接可以跨越文件系统,也可以为目录建立。软链接有自己的node,是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径。
创建软链接:ln -s 原文件 链接文件 -
硬链接
硬链接,只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为inode)。当移动或者删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接记录的是目标的inode。
创建硬链接:ln 原文件 新文件
硬链接和软链接区别:
- 硬链接不会创建inode,即使用的inode都是一样的。软链接会创建新的inode。
- 硬链接的访问属性和源文件一模一样,没有l的标识。软链接的访问属性写明了是 l,且访问权限不能设只能是777,真正的权限取决于源文件。
- 如果移动源文件,则软链接找不到,而硬链接则没有这个问题,因为软链接存的是文件的位置。
- 硬链接是一种引用关系,一个源文件建立1个硬链接,引用计数加1,删除一个文件(硬链接文件或者源文件),引用计数减1,当引用计数为0时,真正删除文件。删除源文件软链接只是找不到了目标文件。
- 不能创建目录的硬链接,不能在不同的文件系统的文件间建立硬链接,软链接则没有这些限制。