硬链接与软链接的区别

硬链接与软连接

      

        本文仅用于个人学习参考:

        简单介绍了硬链接与软连接的区别。

        硬链接

        关于硬链接,也就是是说硬盘当中有个文件,在这个文件最初创建的时候有个文件名,由于各种原因,比如说原路径比较难打,我们又创建了一个硬连,放在比较容易找到的位置。

        这一点本人的理解为:来到马哥基地这里有两个大门,左边一个能进来,右边那个也是没问题的,只是左右名字不同罢了。

        硬链接命令语法:

        ln  filename [linkname]

                   filename: [创建出的链接名 ]:

                  linkname:需要被链接的文件

             

        硬链接特点:

        如上边所说,马哥都是同一位马哥,只是称呼不同。

    ]# touch 11.22           /*首先创建一个文件*/
    ]# ln 11.22 22.11        /*然后为该文件创建一个硬链接*/ 
    ]# ls -l                           /*对比原文件与链接文件*/
        total 0
        -rw-r--r-- 2 root root  0 Oct 20 10:28 11.22
        -rw-r--r-- 2 root root  0 Oct 20 10:28 22.11
        drwxr-xr-x 5 root root 31 Oct 20 10:17 kai
  •         在这个图片中可以清楚的看到,原来的文件与我们使用 ln(硬链接)命令创建出来的数据块(硬链接并不生成文件,下边内容为了容易称呼,我说成硬链接文件)除了文件名,其余都是一模一样的。

  •         硬链接只能在同一分区内创建。硬链接不能针对与目录使用。

            与cp的文件相似,不过硬链接文件可以同步更新,就算源文件丢失,硬链接也能访问。

  •         当然,如果源文件与链接文件同时被删除,那么该文件就彻底没了。

 

        软连接

        软连接相当于windows的快捷方式,当源文件丢失,那么快捷方式也会失去作用。

        
        软连接命令语法:

            ln -s filename [linkname]

                               filename: [创建出的链接名 ]:

                              linkname:需要被链接的文件

        软连接特点:

    软链接的须相对路径设定必指定的是针对与目标文件的相对路径,相对路径可以防止源文件地址的改变。

# ln -s ../home/hua/ hua.1

# ls -l
lrwxrwxrwx  1 root root       12 Oct 20 11:29 hua.1 -> ../home/hua/

   

        软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。

        因此软链接的创建与使用没有类似硬链接的诸多限制:

  •  软链接有自己的文件属性及权限等;

  • 可对不存在的文件或目录创建软链接;

  • 软链接可交叉文件系统;

  • 软链接可对文件或目录创建;

  • 创建软链接时,链接计数 i_nlink 不会增加;

  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)

        如上所说如果软连接的原文件被删除,那么相关链接就会死链。

    死链.png

         当然软链接的用户数据也可以是另一个软链接的路径,其解析过程是递归的。但需注意:软链接创建时原文件的路径指向使用相对路径较好。硬链接创建的时候可以指定绝对路径、相对路径,或者直接就不指定了,因为硬链接创建完成之后,就相当于与原文件断绝了关系,原文件位置的改变并不会影响到硬链接。

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

(0)
lyly
上一篇 2016-10-20
下一篇 2016-10-20

相关推荐

  • 马哥网络班N22开学小计

        2010年通信系统硕士毕业就进入了数据中心从事网络运维管理方面的工作,随着工作展开逐渐感受到系统方面的知识可能成为自己IT职业生涯的短板,于是从2015年底开始系统的学习linux。     2016年上半年由于备考RHCE,非常幸运的在网络上接触马哥的2013版linu…

    Linux干货 2016-08-15
  • 自制linux系统

    自制linux系统  需要为虚拟机新增一个硬盘,作为自制linux系统的载体。也可以用U盘、移动硬盘或其他设备作为载体实验步骤: (1)为虚拟机新增一个大小为20G的硬盘(2)给新增的磁盘分区,划分/boot、swap、/三个分区比如,将第一个分区当作boot,大小为500M;第二个分区当作swap分区,大小为2G;第三个分区用作/,大小为10G。…

    Linux干货 2016-09-13
  • 天神之剑Vim编辑器

    一.概述和基本用法及一些描述 vi:Visual Interface 文本编辑器 文本ASCII , Unicode 文本编辑种类: 行编辑器:sed 全屏编辑器:nano,vi vim – Vi Improved 其他编辑器: gedit 一个简单的图形编辑器 gvim 一个vim编辑器的图形版本 基本用法  vim [OPTION]…

    Linux干货 2016-08-15
  • N28-第二周博客作业

    常用通配符
    *:表示任意长度的任意字符;

    ?:表示任意的单个字符;

    []:表示在指定范围内的单个字符:[a-z];

    [^]:脱字符,是取反的意思,即在指定范围以外的任意字符,如 [^0-9]表示除数字以外的一切字符。

    [:digit:] 表示所有的数字,相当于0-9

    [:lower:] 表示所有的小写字母

    [:upper:] 表示所有的大写字母

    [:alpha:] 表示所有的字母,

    [:alnum:] 相当于[0-9a-z]

    [:space:] 相当于空白字符

    [:punct:] 表示所有的标点符号

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。

    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。

    3、请使用命令行展开功能来完成以下练习:

    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d

    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │?? └── grub
    ├── dev
    ├── etc
    │?? ├── rc.d
    │?? │?? └── init.d
    │?? └── sysconfig
    │?? └── network-scripts
    ├── lib
    │?? └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │?? └── local
    │?? ├── bin
    │?? └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    4、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

    5、如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?

    6、显示/var目录下所有以l开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。

    7、显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。

    8、显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录。

    9、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

    10、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。

    11、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。

    12、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    Linux干货 2017-12-11
  • 文件相关操作练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限: 2、编辑/etc/group文件,添加组hadoop: 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop: 4、复制/etc/sk…

    2017-11-17
  • 马哥教育网络班22期+第1周课程练习

    问题1: 计算机组成如下:CPU、存储器、输入设备、输出设备1、中央处理器(Central Processing Unit,简称 CPU)。它主要由控制器、运算器等组成,并采用大规模集成电路工艺制成的芯片,又称微处理器芯片。   CPU又由运算器和控制器组成。1)运算器 运算器又称算术逻辑单元(Arithmetic Logic Unit简…

    Linux干货 2016-08-15