linux 软连接和硬链接的'区别':
(1)软连接可以‘跨文件系统’,也即可以跨不同目录分区;而硬连接不可以;
(2)关于 I节点的问题 。
硬连接不管有多少个,都指向的是同一个I节点(I节点相同),会把‘结点连接数’增加;
(I节点,也即文件的编号,唯一标示)
只要结点的连接数不是0,文件就一直存在 ;
不管你删除的是源文件还是连接的文件 ,只要有一个存在 ,文件就存在;
(其实也不分什么源文件、连接文件的,因为他们指向的‘都是同一个I节点’)
注意:不能随便删除硬链接文件,否则会删除源文件;
当你修改源文件或者连接文件任何一个的时候 ,其他的文件都会做‘同步的修改’。
软链接‘不直接使用i节点号’作为文件指针,而是‘使用文件路径名’作为指针。
(也即软连接文件的I节点与源文件不相同,而是重新生成;)
所以删除软连接文件(符号链接文件),对源文件无影响;
但是删除源文件,则对于所有的连接文件就会找不到要指向的文件 。
软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
(3)软连接可以对一个‘不存在的文件名’进行连接 。
(4)软连接可以‘对目录’(文件当然可以)进行连接。
(而硬链接‘只能对文件’进行连接;)
备注:I节点 :
它是UNIX内部用于描述‘文件特性’的数据结构.
我们通常称‘I节点’为文件索引结点(信息结点).
i节点含有关于文件的大部分的重要信息,包括‘文件数据块’在磁盘上的地址.
每一个I节点有它‘自己的标志号’,我们称为文件顺序号.
I节点包含的信息:1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.
linux系统下提供‘ln指令’来进行文件链接。
文件链接主要分为硬链接和软链接。
硬链接:
由于linux下的文件是‘通过索引节点(Inode)’来识别文件;
‘硬链接’可以认为是‘一个指针’,指向文件索引节点的指针,系统并‘不为’它重新分配inode。
每添加一个一个硬链接,文件的链接数就加1。
可以用:‘ln命令’来建立硬链接。语法:
ln [options] existingfile(已存在的文件) newfile
ln[options] existingfile-list directory
用法:
第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为 ”existingfile-list”中包含的‘所有文件’创建一个同名的硬链接。
常用可选[options] ,–f 无论”newfile”存在与否,都创建链接;
-n 如果”newfile”已存在,就不创建链接。
硬链接‘不足之处’:
尽管硬链接节省空间,也是Linux系统‘整合文件系统’的传统方式,但是:
(1)不可以在‘不同文件系统’的文件间建立链接
(2)‘只有超级用户’才可以‘为目录’创建硬链接。
(一般用户只能‘对文件’进行硬链接;)
软链接(符号链接):
软链接克服了硬链接的不足,没有任何文件系统的限制,
‘任何用户’可以创建‘指向目录’的符号链接。
因而现在更为广泛使用,它具有更大的灵活性,
甚至可以跨越不同机器、不同网络对文件进行链接。
如果给ln命令加上- s选项,则可以建立软链接。
如果[链接名]已经存在但不是目录,将不做链接。
[链接名]可以是任何一个文件名(可包含路径),也可以是一个目录,
并且允许它与 “目标”不在同一个文件系统中。
如果[链接名]是一个‘已经存在的目录’,系统将‘在该目录下’建立一个或多个与“目标”同名的文件,
此新建的文件实际上是‘指向原 “目标”’的符号链接文件。
软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。
‘实现上的’区别在于:
硬链接原文件和链接文件‘公用’一个inode号,说明他们是同一个文件;
而软链接原文件和链接文件‘拥有不同的’inode号,表明他们是两个不同的文件;
在文件属性上‘软链接’明确写出了是链接文件,而硬链接没有写出来;
因为‘在本质上’,硬链接文件和原文件是完全平等关系;
链接数目是不一样的,软链接的链接数目不会增加;
文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,因为二者是‘等同’的嘛;
而这里软链接显示的大小与原文件就不同了,如file1大小是48B,而file1soft是5B,
这里面的5,实际上就是“file1”的大小。
总之,建立‘软链接’就是建立了一个‘新文件’。
当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到‘真正要访问的文件’。
对于‘软连接’的缺点:
因为链接文件包含有原文件的路径信息,
所以当原文件从一个目录下‘移到’其他目录中,再访问链接文件,系统就找不到了;
而硬链接就没有这个缺陷,你想怎么移就怎么移;
还有,它要系统分配额外的空间,用于建立‘新的索引节点’和保存原文件的路径。
阅读(704) | 评论(0) | 转发(0) |