Linux 软连接和硬链接

Linux 专栏收录该内容
124 篇文章 1 订阅
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”的大小。
总之,建立‘软链接’就是建立了一个‘新文件’。 当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到‘真正要访问的文件’。
对于‘软连接’的缺点:
因为链接文件包含有原文件的路径信息, 所以当原文件从一个目录下‘移到’其他目录中,再访问链接文件,系统就找不到了; 而硬链接就没有这个缺陷,你想怎么移就怎么移; 还有,它要系统分配额外的空间,用于建立‘新的索引节点’和保存原文件的路径。

============================================================================================
其他资料: http://www.cyberciti.biz/tips/understanding-unixlinux-symbolic-soft-and-hard-links.html
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值