Linux的软链接和硬链接区别

在Linux中,为了方便文件的使用,引入了两种链接,即为软链接和硬链接。

那么什么是硬链接,什么又是软链接呢。

简单来说,硬链接就是一个inode号对应多个文件名,也就是说一个文件使用了多个别名。

首先先来看看我们要创建硬连接的文件信息:

[root@localhost ~]# ll -i /root             //查看原文件的属性信息
201386466 -rw-r–r–  1 root root   46 Oct 20 19:18 testlink

接下来我们来针对testlink文件来创建硬连接文件:

[root@localhost ~]# ln testlink testlink1    //创建名为testlink1的硬链接文件
[root@localhost ~]# ll -i                        //比较两个文件的信息
201386466 -rw-r–r–  2 root root   46 Oct 20 19:18 testlink
201386466 -rw-r–r–  2 root root   46 Oct 20 19:18 testlink1

 从上面可以看出,硬链接数的地方变成了2,其他无论是权限、时间戳、大小,甚至inode号都相同,我们在把硬链接文件删除看看:

[root@localhost ~]# rm -rf testlink     //删除硬链接文件
[root@localhost ~]# ll -i               //查看原文件信息
201386466 -rw-r–r–  1 root root   46 Oct 20 19:18 testlink

硬链接数有变成了1!可见删除链接文件后链接数递减;

刚才我们只针对文件创建了硬链接文件,接下来我们对目录创建个硬链接试试看。

[root@localhost ~]# ll -i              //查看testlink目录的属性信息
67111809 drwxr-xr-x  2 root root    6 Oct 20 20:05 testlink     
[root@localhost ~]# ln testlink testlink1       //对比两个文件的信息
ln: ‘testlink’: hard link not allowed for directory    //报错了!!!

由上述可见:

硬链接文件实际就是对原数据起的一个别名,它们具有相同的inode即date block;

创建的硬链接会增加其链接数;

删除硬链接后链接数相应减少,但文件的其他信息不影响;

硬链接只针对文件,对目录无法创建硬链接。

接下来说说软链接:

软链接又称符号链接,不同于硬链接的创建方法,软链接创建是需加-s选项,接下来我们试着创建一个软链接:

[root@localhost tmp]# ll -id /root/testlink/     //查看原目录信息

可见,软链接可对目录创建,对testlink目录创建软链接前后,自身的属性信息比没有变化,而创建后的软链接文件无论是inode号、权限、时间戳,还是大小均改变,类似于win下的快捷方式

[root@localhost ~]# rm -rf /root/testlink     //删除原链接目录  
[root@localhost ~]# ll -i /tmp/testlink2
24206 lrwxrwxrwx 1 root root 17 Oct 13 16:27 /tmp/testlink2 -> ../root/testlink/    //链接文件报错

由此软链接不能不能删除原链接,否则由于映射不到原文件而报错,此类似于win中得快捷方式

由上

软链接不仅对文件可创建软链接,对目录同样有效

删除原始文件后,软链接失效(类似win下快捷方式)

软链接的编号为自己的编号,与原文件无关

此外,在日常生产中,尽量以相对路径的方式来创建软链接,这样在整个目录拷贝时,不会因为绝对路径的改变而对程序产生影响。


原创文章,作者:maomaosan2008,如若转载,请注明出处:http://www.178linux.com/53187

赞 (0)
maomaosan2008maomaosan2008
上一篇 2016-10-20 21:28
下一篇 2016-10-20 22:05

相关推荐

  • N22期-第五周博客作业

    1、显示当前系统上root、fedora或user1用户的默认shell; [root@localhost jimmy]# egrep '^(root|fedora|user1)\>' /etc/passwd | cut -d: -f7 /bin/bas…

    Linux干货 2016-09-10
  • Linux的文本处理工具及grep正则表达式的使用

    文本处理工具及grep正则表达式的使用 本章节学习的内容: 1、各种文本工具来查看、分析、统计文本文件 2、grep正则表达式 3、扩展正则表达式 一、抽取文本的工具: 1、按文件内容:less和cat 2、按文件截取:head和tail 3、按列抽取:cut 4、按关键字抽取:grep 二、文件查看命令:cat, tac,rev 1、命令cat: (1)文…

    Linux干货 2016-08-05
  • awk的详细用法

    awk简介 awk是一种编程语言,也可以说是一个脚本语言解释器,主要是用来实现文本的格式化输出。awk是取了其三位作者名字的首字母,即Aho,Weinberger和Kernighan。awk在Linux上是基于GNU协议实现的,即GNU awk,也就是gawk。 awk的工作模式 遍历整个文件,从第一行到最后一行。每次仅读取文件的一行,依照用户指定的输入分隔…

    Linux干货 2016-11-14
  • LVM应用概要

    LVM — 即Logical Volume  Manager(逻辑卷管理管理),是Linux的一种磁盘管理机制。 LVM可以将物理磁盘以PV(Physical Volume)为单位抽象成VG(Volume Group)。在VG中,最小存储单元是一个PE(Physical Extent)。在VG的基础上再抽象一层,划分出LV(Logical Vol…

    2017-11-28
  • 一个开发眼中的运维

    在云计算时代,开发和运维的结合变得越来越重要。在DIFF论坛第一期,前新浪SAE运维主管,郑志勇,分享了《一个开发眼中的运维》根据自己从开发人员转型运维之后的心得,谈如何把在开发上的运用抽象思维方式运用到运维领域。 1. 运维不是什么? 运维不是打杂的,运维不是客服,运维也不是服务开发的,但要做好合作。 2. 运维是什么? 运维服务于整个产品,保证架构合理,…

    Linux干货 2015-03-11
  • LAMP

    1、请描述一次完整的http请求处理过程; 一次完整的http请求处理过程: (1) 建立或处理连接:接收请求或拒绝请求; (2) 接收请求:接收来自于网络上的主机请求报文中对某特定资源的一次请求的过程; (3) 处理请求:对请求报文进行解析,获取客户端请求的资源及请求方法等相关信息; (4) 访问资源:获取请求报文中请求的资源; (5) 构建响应报文: (…

    Linux干货 2016-12-14