zoukankan      html  css  js  c++  java
  • [译]硬链接与软链接的区别

    摘自:
    what-is-the-difference-between-a-hard-link-and-a-symbolic-link

    一图胜千言。

    一例胜百图。
    创建两个新文件:

    touch blah1
    touch blah2
    

    向里面添加点内容

    echo "Cat"  > blah1
    echo "Dog" > blah2
    

    查看添加的内容:

    cat blah1; cat blah2
    Cat
    Dog
    

    创建硬链接和软链接

    ln blah1 blah1-hard
    ln -s blah2 blah2-soft
    

    查看下我们创建的东西

    ls -l 
    blah1
    blah1-hard
    blah2
    blah2-soft -> blah2
    

    修改blah1的名字没有什么影响

    mv blah1 blah1-new
    cat blah1-hard
    Cat
    

    blah1-hard指向的是inode,所以文件的内容没有变化。

    mv blah2 blah2-new
    ls blah-soft
    blah2-soft
    cat blah2-soft
    cat: blah-soft: No such file or directory
    

    文件的内容没有办法找到,因为软链接是指向的名字,而名字已经被修改了,所以找不到对应的文件。
    因此:
    blah1被删除了,但是blah1-hard仍然拥有内容。
    blah2被删除了,但是blah2-soft是一个指向不存在文件的链接。

    补充:
    硬链接不能跨越文件系统。 为什么? 硬链接共享相同的inode - 它们指向硬件位置,而不是目录树。 这意味着如果你试图在ext3和ext4之间建立硬连接,那么你会遇到一些问题 - 这些文件系统是不同的,所以他们不能共享inode。

  • 相关阅读:
    语言特性-上下文对象
    语言特性-闭包
    语言特性-变量作用域
    语言特性-函数重载与类型检查
    面向对象的JS代码
    单例模式
    wait操作接口
    进程的创建模型
    模拟密码登陆过程
    目录操作的一些函数理解
  • 原文地址:https://www.cnblogs.com/everfight/p/linux_link.html
Copyright © 2011-2022 走看看