一:介绍
Linux链接文件类型有两种,类似于windows系统下的快捷方式。但是Linux链接文件类型又与windows系统的不同。
链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。
二:建立方法
有两种类型的链接:硬链接和符号链接(软链接)。
两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建符号链接。
1)建立一个硬链接:
ln -d source_file hardlink_file
2)建立一个软链接:
ln -s source_file softlink_file
3)删除一个链接:
rm -rf softlink_file
注:用ln -s创建了一个软链接,然后去访问软链接,出现如下错误:Too many levels of symbolic links
这个错误,是之前的ln -s命令时源文件没有使用绝对路径造成的。
总结:不管是源文件还是目标文件都使用绝对路径,这个出错的几率就减小了。
三:两种链接的区别:
硬链接文件有两个限制
1)、不允许给目录创建硬链接;
2)、只有在同一文件系统中的文件之间才能创建链接,而且只有超级用户才有建立硬链接权限。
对硬链接文件进行读写和删除操作时候,结果和软链接相同。但如果我们删除硬链接文件的源文件,
硬链接文件仍然存在,而且保留了愿有的内容。
这时,系统就“忘记”了它曾经是硬链接文件。而把他当成一个普通文件。
那么我们就可以这样理解:硬连接指通过索引节点来进行的连接,其作用是允许一个文件拥有多个
有效路径名,能够达到误删除的作用。
其原因是因为对应的文件的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它
的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。文件才会被真正删除。
注:保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,
称为索引节点号(Inode Index即I节点)。
软链接没有硬链接以上的两个限制,因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。但是软链接的缺点在于:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。
四:总结:
硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,节省空间。
软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件。
所以建立软链接,操作系统需分配额外的空间用于建立新的索引节点和保存原文件的路径。
在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来。
因为在本质上硬链接文件和原文件是完全平等关系;
链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,
硬链接文件显示的大小是跟原文件是一样的,
软链接显示的大小与原文件不同,
建立软链接就是建立了一个新文件。
当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
所以当软链接的原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到源文件了。
若删除硬链接的源文件,那么硬链接就变成一个普通文件。
修改一个软链接文件,源文件和其他的软链接全部进行更新。
修改硬链接文件,源文件和其他的硬链接也会更新,因为inode相同。
原文:http://ccdxdb.blog.51cto.com/4531773/1707088