• 第十六周 链接文件


    一、文件的组成:

    元数据: metadata 属性信息 大小 时间 属主 属组 权限 inode 索引节点

    用户数据: user data 数据块 硬盘存放真实数据的地方 block

    文件分为硬链接文件 hard link 和软链接文件或者符号链接 symbolic link == soft link


    二、软链接文件:

    当我们访问这个软链接文件时,其实就是在访问源文件的本身。就是相当于Windows上面的快捷方式 里面存放的是文件的路径 及可以执行这个文件

    1)软链接文件和源文件属于不同的文件 inode是不一样 那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。

    2)那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。

    3)如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。

    [root@jindada ~]# ll -i /etc/sysconfig/selinux
    134477906 lrwxrwxrwx. 1 root root 17 Jul 6 02:14 /etc/sysconfig/selinux -> ../selinux/config
    [root@jindada ~]# ll -i /etc/selinux/config
    223842 -rw-r--r--. 1 root root 543 Jul 6 02:14 /etc/selinux/config

    三、应用场景:

    1)软件升级

    2) 企业的代码发布 Jenkins 秒级发布

    3)不方便移动的目录

    4)数据回滚

    5)程序读取


    四、ln #创建软链接

    选项:

    -s #创建软链接

    && #前面的命令执行成功 才会执行后面的命令

    || #前面的命令执行失败,才会执行后面的命令

    用法:
    ln -s 源文件 链接文件


    [root@jindada ~]# ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 /root/eth0
    [root@jindada ~]# ll
    total 0
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0

    [root@jindada ~]# mkdir nginx-1.17.0
    [root@jindada ~]# ll
    total 0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    [root@jindada ~]# mkdir nginx-1.18.0
    [root@jindada ~]# ll
    total 0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

    [root@jindada ~]# ll
    total 0
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
    [root@jindada ~]# ln -s nginx-1.17.0/ nginx
    [root@jindada ~]# ll
    total 0
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.17.0/
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
    [root@jindada ~]# rm -f nginx && ln -s nginx-1.18.0/ nginx #版本升级
    [root@jindada ~]# ll
    total 0
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    lrwxrwxrwx. 1 root root 13 Jul 15 20:04 nginx -> nginx-1.18.0/
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0

    [root@jindada ~]# rm -f nginx && ln -s nginx-1.17.0/ nginx #版本回退
    [root@jindada ~]# ll
    total 0
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0


    五、软链接的特点:

    概念

    创建

    跟源文件是不同类型的文件,inode是不一样的

    软链接可以对目录创建 也可以跨文件系统

    rm -f

    删除软链接文件对源文件没有任何影响

    删除源文件,软链接存在,但是会失效 出现 红底白字闪烁状

     

    六、硬链接

    概念: 多个文件的数据指向同一个数据块,多个不同的入口,inode是相同的,这样的文件互为硬链接

    防止文件被误删除


    七、创建硬链接

    ln命令直接创建 只能对文件创建 不能对目录创建

    用法:

    ln 源文件 硬链接文件


    [root@jindada ~]# cp /etc/hosts ./
    [root@jindada ~]# ll
    total 4
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    -rw-r--r--. 1 root root 158 Jul 15 20:18 hosts
    lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
    [root@jindada ~]# ln hosts hosts_hard
    [root@jindada ~]# ll
    total 8
    lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
    -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard
    lrwxrwxrwx. 1 root root 13 Jul 15 20:07 nginx -> nginx-1.17.0/
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.17.0
    drwxr-xr-x. 2 root root 6 Jul 15 19:59 nginx-1.18.0
    [root@jindada ~]# ll -i
    total 8
    134317677 lrwxrwxrwx. 1 root root 41 Jul 15 20:01 eth0 -> /etc/sysconfig/network-scripts/ifcfg-eth0
    134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts
    134317704 -rw-r--r--. 2 root root 158 Jul 15 20:18 hosts_hard


    [root@jindada ~]# cat hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    [root@jindada ~]# cat hosts_hard
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    [root@jindada ~]# echo "123" >>hosts_hard
    [root@jindada ~]# cat hosts_hard
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    123
    [root@jindada ~]# cat hosts
    127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
    123

    删除源文件或者硬链接文件都没有什么影响 只有硬链接为0时,这个文件才会被真正的删除


    八、企业面试题:软链接和硬链接的区别?

    1) 从概念
    硬链接文件与源文件inode相同,软链接文件与源文件inode不同

    2)从创建方式
    创建命令不同:
    软链接:ln -s
    硬链接:ln

    3)从创建对象
    目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以

    4)从删除
    删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
    删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响

  • 相关阅读:
    HTTP的GET和POST请求
    移动开发平台性能比較
    Struts2之类型转换器的使用
    对Socket CAN的理解(4)——【Socket CAN接收数据流程】
    当罗密欧遇到朱丽叶... ...当指针遇到数组
    Qt的Script、Quick、QML的关系与总结
    nyoj27水池数目 (DFS)
    HBase行锁原理及实现
    poj1852ant
    JSTL&EL表达式
  • 原文地址:https://www.cnblogs.com/jhno1/p/13307458.html
Copyright © 2020-2023  润新知