软链接和硬链接
这个说起来挺简单的,但是老忘记,搞混,记录一下。
软链接
软链接又叫符号链接。形式上完全等同于windows的快捷方式。创建一个软链接就是创建一个文本文件,该文件保存了一行字,这行字的内容是一个文件路径。当你把真实文件删了之后,软链接本身还存在,但是指向无效的路径。
那怎么知道这是保存了一行字的普通文件还是一个软链接呢?软链接会设置文件属性为l
,也就是link。
linux的文件结构是这样的:
一个目录文件中存储了文件名和每个文件对应的inode号;在inode表中保存了inode号,文件属性、所有者、数据块位置、时间等信息。
软链接拥有自己的inode号,在inode表中也有属于自己的一行。
创建一个符号链接:
ln -s Target Link_Name
看ln命令的帮助中的说法:
为Target创建一个符号链接,并命名为Link_Name.(create a link to TARGET with the name LINK_NAME.)
符号链接的Target不一定要存在,不存在的话就是创建了一个无效的符号链接。
硬链接
硬链接是在目录文件中添加一项,但是inode号和源文件一样,两个文件在inode表中共享一行,用一个link-count来计数,删除一个文件时,只是将link-count减1,直到为0再把文件真正删除。
ln Target Link-Name
硬链接的Target必须存在。