软链接和硬链接

软链接和硬链接

标签(空格分隔): APUE

 linux的文件系统里面,链接分为软链接和硬链接。现在ubuntu里面实际看一下,两者有什么区别。
 先说在命令行里面怎么实现软链接和硬链接:
 touch file : 改变file的时间戳,如果file不存在,则新建file.
 ln file1 file2: 新建file2作为file1的硬链接。
 ln -s file1 file2: 新建file2,作为file1的软链接。
 
此处输入图片的描述

hard为file的硬链接,soft为file的软链接。
先在file里面输入:123456789
ls -l -i 命令来看看三个文件的信息:

此处输入图片的描述

不考虑其他的,
  先看前面的547971,547971,548073这三个数字,这三个数字表示三个文件的inode的编号。在linux系统中,每个文件都有一个自己的inode编号,所以换句话说,两个inode编号相同的文件,其实就是一个文件,他们共享同一个文件,改变其中一个文件的内容,另一个文件也会相应的改变。
  再看soft文件,他的inode号是单独的,也就是对于系统来说,soft是一个单独的文件,所以单独给了他一个inode号码。
  从上面的inode可以看出来,硬链接和软链接的区别。硬链接的每个文件其实都是等同的,他们拥有一个相同的inode号,在系统的角度来说,硬链接的所有文件其实都是一个文件,因为他们都指向同一个inode。而软链接则不同,软链接是会自己新生成一个inode号,所以从操作系统的角度来说,软链接是一个新的文件,可以说在某种角度上,软链接的文件和链接的文件没有什么关系,因为在本质上,他们和硬链接不一样,软链接是另一个新的文件。所以这里就可以看出,从磁盘空间的角度,硬链接比较节省磁盘空间,因为再多的硬链接 文件数目,对于磁盘来说,都是同一个文件。
  再接下去看,后面的-rw-rw-r–,lrwxrwxrwx,第一位给出了文件的类型,在这里-表示file和hard就是普通的文件,而l表示soft是一个链接文件,后面的rwx表示权限。
 接下来看2,2,1,这三个数字代表文件硬链接的数目。后面的10 10 4表示文件的大小。由于file里面的内容是“123456789”,再加一个换行符结尾,所以file和hard的大小是10字节,而soft的大小是4字节,表明soft的文件大小和它所链接文件的大小无关,这就从侧面说明了软链接是一个新的文件,和原来的文件没有直接的关系,它的大小由它的名字决定,比如soft是4字节,所以他文件的大小就是4字节。接下去看,后面的时间是一个文件最后修改时间。可以改变一下文件的内容,来看看这个时间是怎么变得。
 此处输入图片的描述

我先修改的是file文件,可以看到,hard文件的修改时间是随之改变的,而soft文件的修改时间却没有改变。再来通过打开soft来修改文件的内容,可以得到:
此处输入图片的描述

这里,file和hard文件的时间改变了,但是soft的文件时间却没有改变,因为我虽然是打开的soft的文件来修改内容的,但是最终打开的文件其实是file和hard所指项的文件,对于soft链接文件,我却没有去修改,所以会出现这样的情况。这又一次说明了,软链接是一个新的文件,和链接的文件没有直接的关系。
总结:
  软链接是新建的一个文件,和其链接的文件没有直接的关系。可以想成软链接这种格式的文件,是一个程序,他能打开他所链接到的程序,所以软链接有一个巨大的优点,他能在不同的文件系统之间建立链接,因为他是一个新的文件,和需要链接的文件之间没有直接的关系,所以即使两个文件处于不同的文件系统之间,只要他们各自的文件系统能够识别他们,他们就可以互相链接。相当于软链接的文件只是告诉系统,他所链接的原文件是哪个,即指出文件的位置,至于打开链接原文件的方式,可以由链接文件所在的文件系统来解读。
  硬链接和软链接不同,他所链接的文件和他本身是等价的,即硬链接是直接通过解读inode节点的信息来完成链接的,读文件需要文件系统的支持,所以硬链接不能在不同的文件系统之间链接,因为两个文件在不同的文件系统中,他们解读inode节点信息的方法肯定不一样,这就是硬链接最大的缺陷。
  软链接最大的缺点就是链接源文件的位置的改变,会导致软链接的失败。而硬链接则不会有这种问题。因为软链接实际上应该是链接的文件的位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值