zoukankan      html  css  js  c++  java
  • 用了linux 这么久,终于发现一个需要硬连接的地方

    问题: 为什么要有硬连接呢?

    网上搜软连接和硬连接,会有大量介绍, 这里简单说一下

    软连接 等于 windows 的快捷方式。 软连接保存了源文件的地址,向c里面的指针

    graph LR A[file1] --> B[inode] C[file2] --> A

    硬连接是在文件目录上增加一个filename->inode 记录, 也就是两个文件名指向同一个inode。而一般的文件和inode是一对一的关系

    graph LR A[file1] --> B[inode] C[file2] --> B

    硬连接可以从ls -l 命令看到, 一般文件是1,空目录是2, 目录不为空时大于2

    如下sm.md文件为2表示有一个硬连接, 只有当硬连接个数为0时才会删除inode,所以删除一个硬连接不会删除文件

    -rw-r--r--  1 jimery users   306 Mar  4 17:13 文档.md
    -rw-r--r--  2 jimery users 23835 Jun  8 18:13 sm.md
    

    回到问题,硬连接有什么用

    在chroot或者容器外,必须用硬连接才能找到文件!

    这是因为软连接只是保存了源文件的地址,而到了新系统,这个地址没变,但容器内的根目录发生了变化

    在容器外建立了软连接

    ls content/pdf/sm2.pdf -l
    lrwxrwxrwx 1 jimery users 48 Jun  8 19:28 content/pdf/sm2.pdf -> /home/j/content/pdf/sm.md
    

    在容器内查看

    lrwxrwxrwx    1 root     root            48 Jun  8 11:28 content/pdf/sm2.pdf -> /home/j/content/pdf/sm.md
    
    

    而在容器内,/home/j/content/pdf/sm.md 的文件已经不存在。所以导致访问失败
    但硬连接就不会有这个问题

  • 相关阅读:
    超实用的PHP代码片段
    推荐五款优秀的PHP代码重构工具
    PHP开发搜索引擎技术全解析
    怎样成为一名PHP专家?
    PHP中该怎样防止SQL注入?
    有关PHP 10条有用的建议
    fir.im Weekly
    可能是一场很 IN 的技术分享
    fir.im Weekly
    更新日志
  • 原文地址:https://www.cnblogs.com/hustcpp/p/13067861.html
Copyright © 2011-2022 走看看