zoukankan      html  css  js  c++  java
  • ln命令:软链接与硬链接的区别与应用

    ln命令:软链接与硬链接的区别与应用

    摘要

    Linux系统中,链接是一个十分常见且实用的文件处理命令,它分为软链接和硬链接两种类型。软链接类似于Windows中的快捷方式,硬链接又有着与原文件保持同步更新的特性,两种链接方式各有特点,也各有其应用。接下来我们一起来深入认识一下这两种链接方式。

    ln命令详解

    英文原意:link

    命令所在路径:/bin/ln

    执行权限:所有用户

    语法:

    ln -s [原文件] [目标文件]
    
    -s 创建软链接
    默认是硬链接(不指定-s)
    

    功能描述:生成链接文件

    范例:

    > ln -s /etc/issue /tmp/issue.soft #创建文件/etc/issue的软链接/tmp/issue.soft
    > ln  /etc/issue /tmp/issue.hard #创建文件/etc/issue的硬链接/tmp/issue.hard
    

    1. 软链接

    A. 特征:类似Windows快捷方式

    (1) lrwxrwxrwx 其中l 表示软链接。任何新建的软链接文件权限都为rwxrwxrwx,此权限不决定原文件权限

    (2) 文件大小-只是符号链接,非常小,一般只有十几个字节,与原文件大小无关

    (3) /tmp/issue.soft->/etc/issue 箭头指向原文件

    B. 应用场景:

    Q:什么时候用软链接文件?
    A:需要快捷方式的时候就用软链接文件,只是为了便于管理和使用。
    

    2. 硬链接

    A. 特征:

    (1) 相当于 拷贝(cp -p) + 同步更新 的功能

    实验:

    这里默认已经执行了范例中的命令创建了软/硬链接

    [root@centos7-master /]# cat /etc/issue #查看当前原文件内容
    S
    Kernel 
     on an m
    
    [root@centos7-master /]# cat /tmp/issue.hard #查看当前硬链接内容
    S
    Kernel 
     on an m
    
    [root@centos7-master /]# echo "this is a test" >> /etc/issue #向原文件末尾追加新内容
    [root@centos7-master /]# cat /etc/issue #查看更新后原文件内容
    S
    Kernel 
     on an m
    
    this is a test
    [root@centos7-master /]# cat /tmp/issue.hard #查看原文件更新后硬链接的内容
    S
    Kernel 
     on an m
    
    this is a test #可以看到,这里硬链接与原文件保持了同步更新
    [root@centos7-master /]# rm /etc/issue #删除原文件
    rm: remove regular file ‘/etc/issue’? y
    [root@centos7-master /]# cat /tmp/issue.soft #检验软链接是否仍有效
    cat: /tmp/issue.soft: No such file or directory
    [root@centos7-master /]# cat /tmp/issue.hard #原文件就算删除或丢失,硬链接依然可以访问
    S
    Kernel 
     on an m
    
    this is a test
    

    上述实验我们可以看到,原文件有修改和更新,则硬链接也同步会进行更新;且原文件就算删除或丢失,硬链接依然可以访问,即如同拷贝(cp -p) + 同步更新功能。

    (2) 可通过i节点识别。

    一个文件一定有一个i节点,一个i节点不一定只对应一个文件。某文件的i节点和某文件的硬链接的i节点一般相同。当我们把原文件删除,硬链接依然会映射到对应的i节点。

    关于i节点的知识,请浏览这篇文章:——————

    实验:

    软链接很好判断,如果软链接对应的原文件被删除后,我们通过ls查看软链接的文件信息,会发现软链接被标红,并不停闪烁。

    原文件被删除后的软链接被标红并闪烁

    如何判断硬链接呢?我们分别创建软/硬链接后查看i节点编号。

    [root@centos7-master tmp]# cd /tmp
    [root@centos7-master tmp]# ln issue.bak issue.bak.hard
    [root@centos7-master tmp]# ln -s issue.bak issue.bak.soft
    [root@centos7-master tmp]# ls -i issue.bak issue.bak.hard issue.bak.soft
    8395173 issue.bak  8395173 issue.bak.hard  9116906 issue.bak.soft
    

    可以看到,原文件的i节点编号是8395173,硬链接也是对应8395173编号的i节点的一个映射,而软链接的i节点编号则不同。

    这样我们也可以十分容易理解为什么硬链接可以同步更新了,因为当我们对原文件进行修改操作时,在内核层面来看,这个操作实际上是针对对应的i节点进行操作,因为该i节点同时映射到了两个文件,所以硬链接也自然能体现出同步更新。

    (3) 硬链接不能跨分区,但软链接可以

    [root@centos7-master tmp]# ln /tmp/issue.bak /boot/issue.bak.hard
    ln: failed to create hard link ‘/boot/issue.bak.hard’ => ‘/tmp/issue.bak’: Invalid cross-device link # 根分区/ 和 /boot分区不属于同一个分区
    
    [root@centos7-master tmp]# ln -s /tmp/issue.bak /boot/issue.bak.soft
    

    这相当于在Windows下将C盘的一个文件硬链接到D盘,是不被系统允许的。

    (4) 硬链接不能针对目录使用,但软链接可以

    [root@centos7-master tmp]# ln /tmp /root/tmp.hard
    ln: ‘/tmp’: hard link not allowed for directory
    
    [root@centos7-master tmp]# ln -s /tmp /root/tmp.soft
    

    这相当于在Windows下将D盘的一个目录软链接到桌面,系统是允许的。

    B. 应用场景:

    硬链接使用场景并不多,但可以将其作为一个实时备份来使用。

    参考文献

    [1] 兄弟连.兄弟连Linux入门视频教程[DB/OL].http://c.biancheng.net/view/1713.html,2018-12-21/2020-05-04

  • 相关阅读:
    CentOS如何挂载U盘(待更新)
    CentOS6.8启动Tomcat无法访问
    CentOS7安装后连不上网络无法使用yum
    Android Studio 3.0找不到Android Device Monitor
    初识 ‘测试左移 测试右移’
    利用coverage工具进行Python代码覆盖率测试
    Charles抓包过滤的四种方式
    postman中添加cookie信息
    初始Activity启动模式
    MySQL数据库报错:Too many connection
  • 原文地址:https://www.cnblogs.com/JasonCeng/p/12826948.html
Copyright © 2011-2022 走看看