zoukankan      html  css  js  c++  java
  • Linux中的硬链接与软链接

    inode: ext文件系统的每个目录与文件都有一个inode与之对应,inode里保存了文件和目录实际存储内容的data block的号码,简而言之就是inode是一个文件索引

    硬链接: 建立一个与源文件inode相同的文件,也就是说文件名不同,inode相同,data block也相同,运用编程语言的思想,一个文件和他的硬链接可以理解为是一个对象(文件)的两个引用(文件名)。所以我们修改其中一个文件,另一个文件看到的内容也会跟着变化,当我们删除其中一个文件,另一个文件的内容也不受影响。(ps: 目录是不可设置硬链接的,原因是对目录建立硬链接,会使的目录下的所有文件和目录也建立硬链接,造成很大的复杂度。但是新建目录的时候 . 和 .. 这两个目录实际上是当前目录和上级目录的硬链接,我们新建目录的时候查看目录的连接数便可看出来)

    例如我们执行以下shell

    alexis@idiotic-youth:~/tests$ ls -li
    total 0
    524759 -rw-rw-r-- 1 alexis alexis 0 Nov  7 17:07 test
    alexis@idiotic-youth:~/tests$ ln test test2
    alexis@idiotic-youth:~/tests$ ls -li
    total 0
    524759 -rw-rw-r-- 2 alexis alexis 0 Nov  7 17:07 test
    524759 -rw-rw-r-- 2 alexis alexis 0 Nov  7 17:07 test2
    alexis@idiotic-youth:~/tests$ rm test2
    alexis@idiotic-youth:~/tests$ ls -li
    total 0
    524759 -rw-rw-r-- 1 alexis alexis 0 Nov  7 17:07 test
    alexis@idiotic-youth:~/tests$

    请注意看粗体字部分,当我们建立hard link后,test和test2的inode是一样的,这代表他们使用相同的data block,并且连接数加1,说明这个inode一共有两个文件指向它。删除test2以后,test不受影响,inode连接数减1。其原理如下图

    当删除test2以后

    软链接: 建立一个与源文件的inode不同的文件,它是一个特殊的文件,文件里包含的是指向原始文件的绝对路径,相当于windows的快捷方式,当我们访问链接文件时,相当与跳转到了源文件,当我们修改软链接文件时,源文件也会跟着被修改,删除源文件,软链接便会失去作用。

    参见如下示例

    alexis@idiotic-youth:~/tests$ ln -s test test2
    alexis@idiotic-youth:~/tests$ ls -li
    total 0
    524759 -rw-rw-r-- 1 alexis alexis 0 Nov  7 17:07 test
    560971 lrwxrwxrwx 1 alexis alexis 4 Nov  7 19:12 test2 -> test
    alexis@idiotic-youth:~/tests$ rm test
    alexis@idiotic-youth:~/tests$ ls -li
    total 0
    560971 lrwxrwxrwx 1 alexis alexis 4 Nov  7 19:12 test2 -> test

    建立软链接并不会增加源文件的连接数,当删除源文件后,链接文件会用特殊颜色标志出来,其原理如下图

    当源文件test被删除以后,则变成下图,以至于test2无法打开

  • 相关阅读:
    负载均衡之加权轮询算法(转)
    go 指南学习笔记
    select限制之文件描述符限制
    select的限制
    select实现超时(套接字IO超时设置)
    如何在CentOS 8上安装Puppet
    如何在Ubuntu 20.04 / 18.04或更老版本中安装ifconfig
    关于Ubuntu的Apt安装与使用介绍
    如何在CentOS 8上安装Suricata?
    如何在Ubuntu 20.04上安装PHP Composer
  • 原文地址:https://www.cnblogs.com/zemliu/p/2505410.html
Copyright © 2011-2022 走看看