软链接和硬链接的区别

      什么是链接文件? 使用windows的朋友们应该会经常接触到快捷方式吧!它也就是能让我们快速的打开一个目标应用程序,文件,或者文件夹来使我们的操作更加快捷。那么下面我们就来简单聊聊linux上的“链接文件”吧!

 

 

    

      linux上什么是链接文件呢?这里我们通过一条命令来查看一下:

示例:

[root@Echo /]# ll lib

lrwxrwxrwx. 1 root root 7 Oct  8 21:23 lib -> usr/lib

      lrwxrwxrwx这里开头的l”代表链接文件,比如说,如果这里是“”就是一个普通文件,“d”是一个目录文件,这里就不详细解释linux上的文件类型了。

   其实在linux上链接文件分为2种,一种是硬链接( hard links)另外一种是软连接或者符号链接(symbolic links),那我们先说说硬链接吧。

         

   说到硬链接,这里我们还要普及一个知识点,那是就inode(节点),其实文件是由元数据(metadata)和数据(data)组成,元数据也就是包括文件名,大小,属性等,inode就是记录文件的属性的,一个文件会占用一个inode,那么文件的内容由inode中记录的信息去查找,好了,知道了这些,我们就能更容易了解硬链接了。

示例:

[root@Echo test]# ln /etc/issue ./

[root@Echo test]# ll -i /etc/issue /test/issue

134299792 -rw-r–r–. 2 root root 79 Oct  8 21:36 /etc/issue

134299792 -rw-r–r–. 2 root root 79 Oct  8 21:36 /test/issue

让我们来看看这个示例,通过命令我们看出了,做完硬链接之后的两个文件的确是指向同一个inode,上面说的文件的内容是由inode中的记录的信息查找的,所以这两个文件的大小都是一样的,还有文件被链接的次数是每做一次硬链接就会增长一次,但是磁盘空间与inode的数目都不会改变

  不能跨文件系统:

       因为不同的文件系统都会有自己不同的inode划分,所以硬链接不能跨文件系统。

  不能链接目录;

       虽然说man手册里有硬链接目录的命令,但是连管理员使用都拒绝了,所以现在对目录硬链接还不是很支持。

   软连接(其实这里说是快捷方式才差不多),相对与硬链接,软连接就很好理解了,它就是在创建一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名,由于只是用文件来指向作为操作,那么当源文件被删,改名或者移动到其他位置,软连接打不开了,会一直闪烁。

示例:

[root@Echo test]# ln -s /etc/passwd ./

[root@Echo test]# ll -i /etc/passwd /test/passwd

134670035 -rw-r–r– 1 root root 2074 Oct 19 19:53 /etc/passwd

      379 lrwxrwxrwx 1 root root   11 Oct 19 21:46 /test/passwd -> /etc/passwd

上面的示例发现;我们同硬链接做对比,链接文件的颜色是浅蓝色的,而且inode是不一样的和我们上面说的一样,还有你看下链接文件的大小是不是被链接文件的绝对路径的字符数“/etc/passwd”是不是11个字符,在这里说明一下,“–>”指向的就是被链接的文件名,还有软连接的文件会占用磁盘空间和inode,建议在创建软连接的时候指相对路径,而硬链接来说相对,绝对路径都行。当然相对于硬链接来说是它可以对目录进行链接,也可以跨分区。

那么下面就简单说一下命令的用法:

硬链接:

ln filename [linkname]

软链接:

ln -s filename [linkname]

 

其他选项:

-b–backup:删除,覆盖目标文件之前的备份;

-d-F——directory:建立目录的硬连接;

-f——force:强行建立文件或目录的连接,不论文件或目录是否存在;

-i——interactive:覆盖既有文件之前先询问用户;

       -n–no-dereference:把符号连接的目的目录视为一般文件

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

(0)
EchoEcho
上一篇 2016-10-19
下一篇 2016-10-19

相关推荐

  • awk学习笔记

        awk是一种模式扫描和处理工具,相对于grep的查找,sed的编辑,它在对数据进行分析生成报表时显得尤为强大。awk通过逐行遍历一个或多个文件的方式,查找模式匹配到的行,而后以指定的分隔符(缺省为空格)进行切片,然后针对切片数据进行处理和分析。事实上,gawk有自己的语言,其本身就相当于一个解释器,允许用户创建…

    Linux干货 2015-08-04
  • ​grub应用之提供单独bash系统

    grub应用之提供单独bash系统     1.挂载新硬盘,并创建好三个分区,第一分区为boot分区,第三分区为根分区              2.创建挂载目录,并挂boot分区   &n…

    Linux干货 2017-01-13
  • 一切皆文件——Linux基本命令(1)

    1.一切皆文件 在dev下有很多硬件的文件 sr0是光驱 console是终端,也划为一个文件   2.查看终端   3.两个终端发信 首先右键选择Clone Session,新客隆了一个centos6 分别使用tty命令查看终端名。 分别为0和1 通过命令:echo “想发送的信息“ > 终端名 即可发送 在0中输入命令: 在1中…

    Linux干货 2017-07-13
  • Python内置数据结构

    Python内置数据结构 数值型 Int,float,complex,bool 序列对象 字符串:str  列表:list   数组:tuple 键值对 集合:set    字典:dict 数值型 Int,float,complex,bool都是class,1,5.0,2+3j都是对象即示例 Int:python3的int就是长整形,且没有大小限制,受限于内…

    Linux干货 2018-03-26
  • 恐怖的C++语言

    Linus曾经(2007年9月)在新闻组gmane.comp.version-control.git里和一个微软的工程师(Dmitry Kakurin)争执过用C还是用C++,当时的那个微软的工程师主要是在做Git的Windows版,但他却发现Git的源码居然是C语言写的,而不是C++,于是他(Dmitry Kakurin)在Linux社区里发贴表示对Lin…

    Linux干货 2015-04-03
  • Centos图形界面和命令界面模式切换

    大家都知道,centos有两种用户界面模式,一种是图形界面,也就是我们常说的Xwindows界面;另一种就是命令界面。有时因为方便需要在图形模式下安装一些程序,因图形界面占用的内存等资源较大,影响系统的运行,安装完后需要把系统切换到命令模式下运行,下面就两种模式如何进行切换做一下说明。 CentOS的启动模式共分为7级,分别是: 0-  停机 1-…

    系统运维 2015-07-19