Linux中软链接和硬链接的区别

Linux中软链接和硬链接的区别

链接文件:

  Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。

Inode

文件除了纯数据本身之外,还必须包含有对这些纯数据的管理信息

  • 文件名;

  • 访问权限;

  • 文件的属主以;

  • 该文件的数据所对应的磁盘数据块;

  • 文件的时间戳; 

    • access time

    • modify time

    • chang time

  • 链接数,即有多少文件名指向这个inode;

这些管理信息称之为元数据(mata data),保存在文件的inode节点之中。我们可以通过stat命令查看一个文件的inode信息:

命令格式: 
stat [OPTION]… FILE…

[root@wang ~]17:21# stat /root/wang
文件:"wang"
大小:2474         块:8          IO 块:4096   普通文件
设备:fd00h/64768d Inode:139145901   硬链接:3
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:passwd_file_t:s0
最近访问:2016-10-20 16:17:13.046000565 +0800
最近更改:2016-10-18 04:31:46.303621312 +0800
最近改动:2016-10-20 16:03:57.389348957 +0800

用stat查看文件的inode信息时,我们看到输出的信息中有一行Inode:139145901,这个是/root/wang文件的inode号。每个inode都有一个全文件系统唯一的inode号,操作系统内核正是通过inode号而非文件名来识别不同的文件。文件名仅仅是为了方便用户使用而已,内核是通过文件名找到inode,然后通过inode访问实际文件数据的。既然系统是通过inode号找到的文件内容,那么是否可以存在多个文件的inode号是相同的情况呢?答案是有的就是开头提到的硬链接。


硬链接文件其实就是与原文件在不同或者同一目录(必须同分区)下的另外一个外号,与原文件指向同一个Inode,对应同样的磁盘数据块,具有相同的访问权限、属性等等。也就是说硬链接其实就是同一个人的别名或者是外号,不管叫什么其实都是指的同样的人。

  • 命令格式: ln filename [ linkname ]

硬链接的优点;

  • 节省系统空间,一段磁盘数据块不论有多少个硬链接都只占用一次空间;

  • 硬链接文件之间互相没有关联,当一个文件删除时其他文件依然可以正常使用;

硬链接的缺点;

  • 不能跨分区创建硬链接。因为inode号只有在一个分区内才能保证是唯一的,跨越分期统则inode号就可能重复。

  • 不能对目录创建硬链接。


软链接又叫符号链接(symbolic link),与硬链接不同的是软链接本身也是文件有自己独立的Inode号,软链接的文件内容是其所链接的另外一个文件或者目录的路径。当访问软链接时,会按照路径找到软链接所指向的实际目标文件。举个例子 软链接和Windows系统下的快捷方式十分类似。

命令格式:ln -s filename [linkname]

使用”ls -l ”令查看文件长格式时 第一位显示为“l”的文件为软链接文件。软链接的文件内容就是引用文件的名称。

        [root@wang ~]19:57# ll  /tmp/testdir/
       总用量 0
       drwxr-xr-x. 2 root root  6 10月 20 19:31 wang
       drwxr-xr-x. 2 root root  6 10月 20 15:30 zz
       lrwxrwxrwx. 1 root root 15 10月 20 15:31 zz.1nk -> /tmp/testdir/zz

软链接的优点

  • 可以对目录创建软链接

  • 可以跨分区使用 
    软链接的缺点

  • 链接文件的位置或者目标文件的位置发生改变时,软链接可能会失效。


演示

创建一个指向 /tmp/testdir/test 的链接接文件 slink

[root@wang ~]20:18# mkdir /tmp/testdir
[root@wang ~]20:19# touch /tmp/testdir/test
[root@wang ~]20:19# ln -s /tmp/testdir/test /tmp/testdir/slink

使用ls -li /tmp/testdir/ 查看会发现新创建的软链接文件slink的inode:4323463而原文件test的inode:4323457

1476968741372600.png

使用ln /tmp/testdir/test /tmp/testdir/hlink创建一个/tmp/testdir/test 的硬链接文件 hlink 
使用ls -li /tmp/testdir/查看会发现新创建的硬链接文件hlink和原文件test的inode相同都是4323457,属主、属组权限相同同时链接数变成了2 

Linux中软链接和硬链接的区别

使用rm /tmp/testdir/test删除原文件test后,再次使用ls -li /tmp/testdir/查看会发现软连接slink已经失效,硬链接文件链接数减少了一个。

1476968741541677.png


                                             2016-10-20 20:54:36

原创文章,作者:M21-13-王振中,如若转载,请注明出处:http://www.178linux.com/53258

赞 (0)
M21-13-王振中M21-13-王振中
上一篇 2016-10-20 20:58
下一篇 2016-10-20 21:01

相关推荐

  • 了解Nginx

    Nginx Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝…

    Linux干货 2016-11-07
  • LVM管理

    1、逻辑卷管理器(LVM) (1)逻辑卷管理器(LVM,logical volume manager)可以整合多个物理分区在一起,让这些分区看起来就像一个磁盘一样,而且,还可以在将来其他的物理分区或将其从这个LVM管理的磁盘中删除。这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性,同时LVM还有快照功能。 (2)逻辑卷管理器的基本术语 物理…

    Linux干货 2016-09-01
  • man,男人的使用方法

        Linux中有个很强大的男人,这个男人就是man。任何不懂得命令和或者配置文件我们都可以去man,所以请深爱这个男人;     我们输入 man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输入“ma…

    Linux干货 2016-07-26
  • 学习宣言

    世界上没有笨的人,只有不勤奋的人。严格按照学习计划要求自己,努力完成学业,为自己以后的职业发展铺平道路;

    Linux干货 2016-10-25
  • 计算机网络基础知识与Linux网络配置

    本文主要内容是: 1.讲述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 2、IP地址的分类有哪些?子网掩码的表示形式及其作用 3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。 4、如何给网络接口配置多个地址,有哪些方式? 5、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方…

    Linux干货 2016-11-14
  • 马哥教育网络班22期第1周课程作业

    一、基础中的基础————–计算机的组成部分         计算机组成分为硬件系统与软件系统         硬件包括五个部分     1.控制器:控制器 I/O 存储器 &nbs…

    Linux干货 2016-08-15