• 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无法打开

  • 相关阅读:
    第一次 实习笔记
    docker 提示 Drive has not been shared 错误
    使用matplotlib画出log的图像
    python基础实现tcp文件传输
    django简单实现注册登录模块
    python使用消息队列RabbitMq(进阶)
    scrapy爬虫值Items
    redis常见配置redis.conf
    js实现往数组中添加非存在的对象,如果存在就改变键值。
    CSS之user-select——设置标签中的文字是否可被复制
  • 原文地址:https://www.cnblogs.com/zemliu/p/2505410.html
Copyright © 2020-2023  润新知