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号。
  • 相关阅读:
    flask-login
    python3安装scrapy框架
    Redis--对象共享(整数型字符串)
    Redis--对象(type、encoding、ptr、lru、refcount)
    Redis--内存回收(引用计数法)
    Redis--跳跃表
    Redis--压缩列表(节约内存,连锁更新)
    Redis--整数集合(升降级)
    Redis--Rehash(h[0],h[1],rehashIdx, 渐进式)
    Redis--解决Hash表键冲突(单向链表next指针,表头)
  • 原文地址:https://www.cnblogs.com/CharrammaBlog/p/13623984.html
Copyright © 2011-2022 走看看