linux文件系统最重要的特点之一就是他的文件链接,链接是对文件的引用,可以让文件在文件系统多处被看到。链接可以如同原始文件一样被对待,当通过链接对文件进行编辑时,其实和直接编辑原文件完全一样的。在linux中,链接分为两种。一种为硬链接,一种为软链接(符号链接)。
首先要知道,当划分磁盘分区并格式化的时候,整个分区会被划分为两个部分,即inode区和data block(实际数据放置在数据区域中)这个inode即是(目录、档案)文件在一个文件系统中的唯一标识,需要访问这个文件的时候必须先找到并读取这个文件的 inode。 Inode 里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。
在linux文件系统中,保存在磁盘分区中的文件都会被分配一个i节点号,i节点代表着对应的inode,通过i节点找到磁盘中文件的位置(block块)。
硬链接:
在linux中不同的文件指向同一个i节点,就是硬链接。硬链接是通过索引节点(inode)进行链接,硬链接的作用就是一个文件可以拥有不同的路径,也可以说 是不同的名字。所以硬链接文件和原文件其实就是同一个文件。
创建方法:ln filename linkname
硬链接特征:
1、硬链接文件和原文件拥有相同的i节点和block块,可以看作是同一个文件;
可以形象的把硬链接文件和原文件理解为一个文件的两个不同的接口,是同样的存储空间。就像是一间教室的两个不同门,都可以直接进入“教室”
2、通过i节点识别硬链接;
因为硬链接和原文件是指向同一个i节点,所以他们的i节点号完全一样。同样,硬链接文件也比较隐蔽,它是文件的另一个身份的存在,和其他文件完全一样。只有通过查看i节点号,才能找出硬链接。查看i节点号,我们可以使用"ls -il"命令来实现,
通过截图可以看到f1和q1是完全一样的,而且它们和其他文件不同一点是它们的节点数为2,这就表明它们是硬链接文件。所以同一个文件创建的硬链接越多,链接数就会递增。
3、不能跨越分区使用
硬链接文件必须对应在同一文件系统上的一个物理文件,不能跨越分区使用。因为inode是这个文件在当前分区中的索引值,是相对于这个分区的,当然不能跨越文件系统了。简单的理解就是同一个文件或存储空间必须要在同一个分区下。就像是同一间教室必须要在同一栋楼上。不再同一栋楼上,当然不可能通过两个不同的门进入同一间教室。
4、不能针对目录使用
使用:
因为硬链接是指向同一个inode,创建硬链接就是为原文件的inode在当前目录上创建一个新的指针,所以可以删除任意一个,完全不影响另外的使用。由于拥有相同的i节点和block块,所以就是指向同一个文件,修改文件数据,都会随之发生改变。
无论编辑f1还是q1,都可以看到f1,q1完全一样。
删除其中一个,另一个可以正常使用,链接数减少。文件若要存在,至少有一个链接数,当链接数为零时,该文件被删除。
软链接:
软连接就是建立一个独立的文件,这个文件拥有独立的inode和block块,只是他的block块中记载的是它链接的文件的文件名和i节点号,然后再通过源文件的inode找到文件数据。软链接可以理解为一种快捷方式。
创建方法:ln -s filename linkname
创建软链接时需要注意的是原始文件的路径如果使用相对路径,一定是相对于软链接文件的路径,而不是当前目录的路径!
第一种情况:直接写原始文件名称 -- 报错
第二种情况:原始文件名写相对与当前目录的相对路径 --报错
第三种情况:原始文件名写相对于软链接文件的相对路径 --正确
第四种情况:写原始文件的绝对路径 --正确
软连接特征:
1、类似于windows快捷方式;
完全独立存在,只是在当前目录下导向另外一个目录或文件的路径。
2、软链接拥有自己的i节点和block块,但数据块中只保存原文件的文件名和i节点号,并没有实际的文 件数据;
可以看到创建w1为q1的软链接,w1和q1的i节点号,权限,大小都不相同。而且w1的文件名还被特别标识出,所以它们是独立的两个文件
3、lrwxrwxrwx l软链接 软链接的文件权限都为 rwxrwxrwx
因为软链接只是一个指向动作,最终的权限还是要靠源文件的权限来决定。所以软链接的权限无所谓。
4、修改任意文件,另一个都改变;
因为软链接可以理解为一种快捷方式,所以修改任意一个,另外一个也会随之变化。
5、删除原文件,软链接不能使用;
由于只是作为指向的动作,所以当来源文件被删除之后,软连接的文件无法开启,因为找不到原始档名。连结档的内容只有档名,根据档名链接到正确的目录进一步取得目标档案的inode,最终就能够读取到正确的数据。如果目标档案的原始档名被删除了那么整个环节就进行不下去了。
软链接文件会被特殊标识,指向的源文件会被表示并闪烁,软链接文件无法使用!
本文出自 “I'm Groot” 博客,请务必保留此出处http://groot.blog.51cto.com/11448219/1831829
原文:http://groot.blog.51cto.com/11448219/1831829