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

相关推荐

  • shell脚本初步

    shell脚本编程初步 程序:由数据和指令组成, 指令:由程序文件提供 数据:可以通过IO设备、文件、管道来得到, 程序:算法+数据结构 变量:变量名+变量名指向的内存空间 变量赋值: name = value变量类型:存储格式:字符 数值(精确数值 近似数值)   表示数据范围  &nb…

    Linux干货 2016-08-15
  • Linux下DNS服务器配置

    Linux下DNS服务器配置 简要描述各种DNS服务器的配置方法。包括正向解析DNS服务器、逆向解析DNS服务器、主从DNS服务器。 实验环境整体配置 关闭SElinux setenfore 0 清空防火墙 iptables -F 修改主配置文件 /etc/named.conf #监听本机外网端口 listen-on port 53 { 127.0.0.1;…

    Linux干货 2017-05-31
  • 计算机基础知识及基本命令(20170214)

    计算机基础知识 操作系统相关 linux分区介绍 安装linux linux基本命令    一、计算机基础知识       计算机(computer):计算机(Computer):俗称电脑,是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动、高速地处理,然后把处理结果输出的现代化智能电子设备 …

    Linux干货 2017-02-14
  • 进程,自动化任务与安全

    进程     进程就是一段存储了一个指令集的内存空间    相关命令:        pstree:显示当前运行的进程树,按树状结构显示     &n…

    Linux干货 2017-04-02
  • N21-兔锅-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     cp -a /etc/skel /home/tuser1     chmod g-x /home/tuser1/     chmod o-x /home/t…

    Linux干货 2016-07-26
  • httpd-2.2和httpd-2.4区别 、请求方法和响应状态码、虚拟主机、访问控制、持久链接

    第十周
    The Apache HTTP Server is a powerful, efficient, and extensible web server.
    2018/2/4 16:33

    2018-02-04