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

    创建一个普通的文本文件及其软链接和硬链接

    # 一个文本文件abc.txt
    echo 'hello world' > abc.txt
    # 创建软链接
    ln -s abc.txt s_abc.txt
    # 创建硬链接
    ln abc.txt h_agc.txt
    

    查看三个文件的详细信息

    [root@Charramma ~]# ll -i
    
    131419 -rw-r--r-- 2 root root        12 Sep  6 21:54 abc.txt
    131419 -rw-r--r-- 2 root root        12 Sep  6 21:54 h_abc.txt
    131421 lrwxrwxrwx 1 root root         7 Sep  6 21:55 s_abc.txt -> abc.txt
    

    可以看出几点:

    1. 硬链接和源文件只有文件名上的不同,连inode都是一样的。这里注意一下,我是先创建的软链接,后创建的硬链接,但是软链接的创建时间是实际创建时间,硬链接的创建时间是源文件的创建时间。
    2. 软链接的文件类型是l(链接文件);硬链接的文件类型是普通文本类型。
    3. 软链接是和源文件完全不同的文件,权限位是777,不过访问软链接最后看的还是源文件的权限位。

    删除源文件

    [root@Charramma ~]# rm -f abc.txt 
    [root@Charramma ~]# cat h_abc.txt 
    hello world
    [root@Charramma ~]# cat s_abc.txt 
    cat: s_abc.txt: No such file or directory
    [root@Charramma ~]# 
    

    软链接已经不可访问了,硬链接不受影响。

    重新创建abc.txt

    [root@Charramma ~]# echo 'HELLO WORLD' > abc.txt
    [root@Charramma ~]# cat s_abc.txt
    HELLO WORLD
    [root@Charramma ~]# cat h_abc.txt
    hello world
    [root@Charramma ~]# 
    

    软链接可以访问了,内容是新的abc.txt文件内容;而硬链接的内容还是之前的内容。

    总结:

    • 硬链接和原文件只是目录项不同,而inode和block都是一样的内容。软链接是全新的目录项,全新的inode和block,只是block里的内容是链接的文件名。
    • 删除原文件不会影响硬链接,但软链接会失效
    • 软链接只认文件名,硬链接认inode号。
  • 相关阅读:
    Qt Creater更改默认构建目录
    QT-无法定位程序输入点解决方案
    Qt qmake报错(TypeError: Property 'asciify' of object Core::Internal::UtilsJsExtension)
    python学习--交互式图形编程实例二
    python学习--交互式图形编程实例一
    python学习--面向对象程序设计实例
    python学习--面向过程程序设计实例
    python学习--程序设计方法实例一
    python学习--字典操作实例二
    python学习--文档
  • 原文地址:https://www.cnblogs.com/CharrammaBlog/p/13623984.html
Copyright © 2011-2022 走看看