天天一个linux命令21之ln: linux 下的软链和硬链

首先理解一下一下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总结:总结

第一,ln命令会保持每一处连接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
第二,ln的连接又软连接 和硬连接两种,
        软连接就是ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,
        硬连接ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,
        不管是软连接仍是硬连接,文件都保持同步变化。




相关文章
相关标签/搜索