linux软限制和硬限制的区别,lsattr命令详解
Linux文件系统将硬盘分为超级块、inode列表和数据区三部分
inode指示文件中的数据存储在数据区的哪个块中。 由于无法更改此“映射”关系,因此索引节点表示文件本身。 (值得注意的是,文件名和文件本身没有直接映射,而是在它们之间夹有索引节点。)
内核为每个新创建的文件分配一个inode,并为每个文件分配唯一的inode编号。 文件属性存储在索引节点上,并在访问文件时将索引节点复制到内存中,从而提供对文件的快速访问。
链接是一种在共享文件并访问该文件的用户的几个目录条目之间建立链接的方法。
Linux包含两种类型的链接:“硬链接”(Hard Link )和“软链接”(soft link ),软链接也称为符号链接。
硬链接
硬链接相当于指向文件索引节点的指针,系统不会重新分配inode。 使用ln命令建立硬链接。
创建指向文件的硬链接时,硬链接使用与文件相同的索引节点编号。 此时,原始文件的inode连接数从最初的1变为2,实际上硬链接和文件使用了相同的inode。 但是,我们发现,只是inode连接数增加了,删除文件不会影响硬链接,硬链接的inode数从2变为1
#无论是硬链接还是软连接,源文件都必须先存在
[ root @ tanbaobaothy ] # touch codefile.txt
[ root @ tanbaobaothy ] # VI codefile.txt
#索引数为1
[root@tanbaobao thy]#ls -il
总使用量8
92461-rw-r----r----1根根根612月18日11336004codefile.txt#缺省情况下,不添加用于创建硬链接的参数,参数2创建链接
[ root @ tanbaobaothy ] # ln codefile.txth _ codefile.txt
#查看硬链接时,inode的索引号相同,但索引数加1
[root@tanbaobao thy]#ls -il
总使用量12
922461-rw-r-- r-- 2根路由6 12月18日11:04 codefile.txt 922461-rw-r---2根路由612月18日11:04 h _ code fille
[ root @ tanbaobaothy ] # RM-RF codefile.txt
[root@tanbaobao thy]#ls -li
总使用量8
92461-rw-r----r----1根路由612月18日18 11:04 h_codefile.txt
PS :硬链接只能应用于文件,不能应用于目录。 此外,不能在文件系统之间(即分区之间)应用。 不能在不同文件系统的文件之间建立链接。
软链接(符号链接)。
符号链接是指向文件的间接指针。 硬链接直接指向文件的inode。
软链接可以克服硬链接的不足,没有文件系统限制,任何用户都可以创建指向目录的符号链接。 也可以跨不同的计算机和不同的网络链接文件。 要建立软链接,请在ln后添加选项s。
创建文件的软链接时,软链接使用新的inode,因此软链接的inode编号与文件的inode编号不同,软链接的inode包含指向该文件的路径,即使删除该文件,软链接也不会使用因为文件路径不存在。 如果再次创建此文件(文件名与以前相同),软链接将再次指向此文件。 I节点编号与以前不同。 硬链接不受影响
#首先创建源文件
[ root @ tanbaobaothy ] # touch srcfile.txt
[root@tanbaobao thy]#ls -l
总使用量4
-rw-r----r----1创建根根根3812月18日11336001srcfile.txt#软连接(参数2必须是软连接文件名) )
[root@tanbaobao thy]#ls -l
总使用量4
-rw-r--r-- 1 root root 38 12月18日11336001srcfile.txt#参考(软连接索引不同,索引数均为1,软连接文件名后面是链接的源文件
[root@tanbaobao thy]#ls -il
总使用量8
922457 lrwxrwxrwx 1 root root 11 12月18日11:02 desfile.txt-srcfile.txt 922460-rw-r-- r--1root root 6412月18日1336003 srcfiot
[root@Tanba]
obao thy]#rm -r srcfile.txtrm:是否删除普通文件 "srcfile.txt"?y
[root@tanbaobao thy]#ls -il
总用量 4
922457 lrwxrwxrwx 1 root root 11 12月 18 11:02 desfile.txt -> srcfile.txt
查看软连接文件会显示没有该文件:
重新创建之后又会恢复,因为路径指向的文件存在:
[root@tanbaobao thy]#touch srcfile.txt
[root@tanbaobao thy]#ll -i
总用量 4
922457 lrwxrwxrwx 1 root root 11 12月 18 11:02 desfile.txt ->srcfile.txt922458 -rw-r--r-- 1 root root 0 12月 18 11:43 srcfile.txt
说明:可以创建多个链接文件,但是不能在软连接文件上创建链接文件,这样会导致断裂,形成混乱的链接链
区别:
挂载点
只能在同种存储媒体上的文件之间创建硬链接(Hard Link),不能在不同挂载点下的文件间创建硬链接,对于后一种情况,可以使用软链接;(区分不同挂载点与同一挂载点不同目录)
目录
软连接就相当于 win 中的快捷方式即如果软链接一个目录只是一个目录的快捷方式到指定位置,操作系统找这个快捷方式会直接找到真实目录下的文件。但是硬链接的话,相当于镜像的方式,创建一个目录的硬链接之后,操作系统需要把这个目录下所有的文件都要做一次硬链接(复制一份过去),这样操作系统在访问这个链接的时候要不断去遍历,大大增加复杂度,而且很容易进入死循环。
硬链接不能对目录创建受限于文件系统的设计。Linux 文件系统中的目录均隐藏了两个特殊的目录,当前目录和父目录。其实是两个硬链接,若系统运行对目录创建硬链接,则会产生目录环。
总结:
1)硬链接原文件&链接文件共用一个inode号,说明他们是同一个文件;而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;
2)在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系,就像文件被复制了一份一样;
3)链接数目是不一样的,软链接的链接数目不会增加,硬链接会相应的加一;
4)文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,而这里软链接显示的大小与原文件就不同了。