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

    要弄明白硬链接和软链接,先要弄懂Linux中的inode这个东西。当划分磁盘分区并格式化时,整个分区会被划分为两个部分,即inode区data block(实际数据存放在数据区域中)。Inode里面存储了文件的很多重要参数,其中唯一标识称作 Inumber, 其他信息还有创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息。 需要访问这个文件的时候必须先找到并读取这个文件的inode.

    1 从概念上理解

    【硬链接】

    通过inode来进行链接,Linux中,多个文件名指向同一个inode是存在的。硬链接的作用是允许一个文件有多个有效路径名,这样可以防止“误删”功能。因为文件真正删除的条件是与之相关的所有硬链接文件均被删除!

    【软链接】

    也称符号链接,类似于windows的快捷方式。

    2 通过实践来理解:

    hh@hh-virtual-machine:~$ mkdir ff
    hh@hh-virtual-machine:~$ cd ff
    hh@hh-virtual-machine:~/ff$ touch f1  创建测试文件f1
    hh@hh-virtual-machine:~/ff$ ln f1 f2  创建f1的一个硬链接文件f2
    hh@hh-virtual-machine:~/ff$ ln -s f1 f3创建f1的符号链接文件f3
    hh@hh-virtual-machine:~/ff$ ls -li   -i参数显示文件的inode节点信息
    总用量 0
    931048 -rw-rw-r-- 2 hh hh 0 11月  7 19:21 f1
    931048 -rw-rw-r-- 2 hh hh 0 11月  7 19:21 f2
    931097 lrwxrwxrwx 1 hh hh 2 11月  7 19:21 f3 -> f1
    从结果来看,硬链接文件f2与原文件f1的inode节点相同,均为931048,符号链接文件inode节点为931097.
    
    
    hh@hh-virtual-machine:~/ff$ echo I am >>f1
    hh@hh-virtual-machine:~/ff$ cat f1
    I am
    hh@hh-virtual-machine:~/ff$ cat f2
    I am
    hh@hh-virtual-machine:~/ff$ cat f3
    I am
    hh@hh-virtual-machine:~/ff$ rm -f f1
    hh@hh-virtual-machine:~/ff$ cat f2
    I am
    hh@hh-virtual-machine:~/ff$ cat f3
    cat: f3: 没有那个文件或目录
    通过测试发现,删除原始文件f1后,硬链接f2不受影响,但是符号链接f3没有了。
    

    3 总结

    • 删除符号链接f3,对f1,f2无影响
    • 删除硬链接f2,对f1,f3无影响
    • 删除f1,对f2无影响,但f3失效
    • 同时删除f1和f2,文件才会真正删除!
  • 相关阅读:
    敏捷开发-各个原则的理解
    DWH中增量数据的抽取
    SSIS的部署和配置
    Checkpoint 和Breakpoint
    两种动态SQL
    SQLServer查询计划
    程序员接项目的经验1
    Date.prototype.format
    前端颜色选择器
    Idea快捷键和使用技巧【未完】
  • 原文地址:https://www.cnblogs.com/myidea/p/4945953.html
Copyright © 2011-2022 走看看