linux下的连接文件

来源:互联网 发布:一级域名怎么解析二级 编辑:程序博客网 时间:2024/06/05 16:09
linux下的连接文件共有两种,一种是类似于windows的快捷方式功能的文件,可以让你快速连接到目标文件,被称为软连接;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种被称为硬连接。这两种连接完全不一样。
首先介绍硬连接:
每个文件都会占用一个inode,文件内容由inode的记录来指向。想要读取该文件,必须要经过目录记录的文件名来指向到正确的inode号码才能读取。即文件名只与目录有关,但是文件内容则与inode有关。hard link就是在某个目录下新建一个文件名来连接到某个inode号码上。也就是说它们指向了硬盘上的同一块空间。

个人理解是每个inode就好像是一个指针一样,每个目录的内容应该就是文件名,而文件的内容则是真实存储在文件中的内容。
《鸟哥的linux私房菜》中的图8-7,文件名找到相对应的文件的inode,这个inode指向了文件的实际内容。硬连接就是创建了多个文件名,让它们指向相同的inode,所以通过它们查询到的文件内容也是一样的。这个时候,我们删除掉一个文件名并不会将这个文件删除掉,只有在文件名全部被删掉之后,内核发现没有文件名和这个inode相对应了,才会删除掉这个inode指向的文件内容,这个时候就是找不到文件内容了。类似于c++中的智能指针。硬连接一般不会增加
磁盘的空间与inode的数目。我们需要注意到硬连接是有限制的:
1.不能跨文件系统。
2.不能硬连接到目录上。

除了硬连接外,还有符号连接,也被称为软连接。
符号连接则会真实产生一个文件,这个文件的内容是要连接的文件的名称。例如如果要连接到/etc/passwd,那么这个产生的文件的内容就是/etc/passwd,当然,你是读不到这个文件的内容的,因为它是一个连接文件,所以你一旦读取这个文件,读取到的将会是它所连接的那个文件的内容,当连接一个文件的时候,将会占用磁盘的空间,并且也会占用inode。这个时候,如果把源文件删除掉,那么就会真正的删除掉文件,而新产生的连接文件也打不开了,因为只有一个文件名对应inode。

连接文件的命令是ln,如果不加任何参数产生的就是硬连接,加上-s选项则是软连接。

格式为  ln  passwd   passwd-hd 
                   源文件      产生的连接文件

0 0
原创粉丝点击