首先理解一下一下inode:Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。node
表面上,用户经过文件名,打开文件。实际上,系统内部这个过程分红三步:首先,系统找到这个文件名对应的inode号码;其次,经过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。linux
一、文件名和inode号码是"一一对应"关系,每一个inode号码对应一个文件名。可是,Unix/linux系统容许,多个文件名指向同一个inode号码。spa
这意味着,能够用不一样的文件名访问一样的内容;对文件内容进行修改,会影响到全部文件名;可是,删除一个文件名,不影响另外一个文件名的访问。这种状况就被称为"硬连接"(hard link)。.net
ln命令能够建立硬连接:ln 源文件 目标文件get
二、除了硬连接之外,还有一种特殊状况。同步
文件A和文件B的inode号码虽然不同,可是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。所以,不管打开哪个文件,最终读取的都是文件B。这时,文件A就称为文件B的"软连接"(soft link)或者"符号连接(symbolic link)。it
这意味着,文件A依赖于文件B而存在,若是删除了文件B,打开文件A就会报错:"No such file or directory"。这是软连接与硬连接最大的不一样:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode"连接数"不会所以发生变化。class
ln -s命令能够建立软连接 ln -s 源文件(或目录) 目标文件(或目录)file
3总结:总结