Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432258
  • 博文数量: 103
  • 博客积分: 1455
  • 博客等级: 上尉
  • 技术积分: 1380
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-15 22:17
文章分类

全部博文(103)

文章存档

2013年(4)

2012年(99)

我的朋友

分类:

2012-10-08 12:08:59

原文地址:软连接和硬链接 作者:jackson198574

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) |
给主人留下些什么吧!~~