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

    在Linux中有两种不同类型的文件链接:

    符号链接(Symbolic Link),也称为软链接;
    硬链接(Hard Link);

    【硬链接】

      硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

    【软链接】

      符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。类似于Windows的快捷方式。

    【举例】

    # echo "hello linux" > test
    # ln test test.hard
    # ln -s test test.soft
    # ls -il *
    1009643 -rw-r--r--. 2 root root 12 May 19 11:09 test
    1009643 -rw-r--r--. 2 root root 12 May 19 11:09 test.hard
    1009645 lrwxrwxrwx. 1 root root  4 May 19 11:09 test.soft -> test
    # file *
    test:      ASCII text
    test.hard: ASCII text
    test.soft: symbolic link to `test'

      我们可以看到源文件(test)和硬链接(test.hard)的inode节点是一样的,而符号链接test.soft则不一样。 说明硬链接和源文件是同一个文件,而软链接则不同,软链接可以看成是指向源文件。

    # echo "Hello World" >> test
    # cat test
    hello linux
    Hello World
    # cat test.hard 
    hello linux
    Hello World
    # cat test.soft 
    hello linux
    Hello World

      可以看到,当修改源文件的时候,软硬链接的内容也发生了相应的修改。

    # rm -rf test
    # cat test.hard 
    hello linux
    Hello World
    # cat test.soft 
    cat: test.soft: No such file or directory

      当删除源文件,可以看到硬链接还是可以看到文件内容,而软链接则提示文件不存在。

      当查看test.soft,可以看到指向的test标记为红色,并且闪烁,表示文件不存在。

    【区别】

      软链接和硬链接之间的区别:

    硬链接共享一个inode节点,删除了源文件不影响;软链接一个链接有一个节点,删除源文件将影响其工作;
    创建硬链接链接数加1,不能跨分区创建链接,不能跨设备,不支持目录创建;软链接支持跨分区,跨设备,支持目录的创建;
    软链接创建时,用的相对路径是相对于软链接文件的路径不是相对于当前工作目录的路径;

    【总结】

      删除符号链接,对源文件没有影响;

      删除源文件,对硬链接没有影响;

      同样,删除硬链接,对源文件没有影响;

      删除原文件,以及所有的硬链接,文件才会真正被删除。

    【参考】

      https://www.cnblogs.com/itech/archive/2009/04/10/1433052.html

      https://www.jianshu.com/p/bebfad90e939

  • 相关阅读:
    微软算法100题25 查找连续最长的数字串
    微软算法100题24 就地逆序单链表
    微软算法100题21 数列中所有和为特定值的组合
    微软算法100题20 字符串转整数 atoi
    约瑟夫环
    微软算法100题17 字符串中找到第一个只出现一次的字符
    微软算法100题16 按层遍历二叉树
    微软算法100题15 求二元查找树的镜像
    微软算法100题14 在排序数组中找到和为指定数的任意两个元素
    NLP(十) 主题识别
  • 原文地址:https://www.cnblogs.com/Hi-blog/p/Linux-Hard-and-Symbolic-Link.html
Copyright © 2011-2022 走看看