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 的文件已经不存在。所以导致访问失败
    但硬连接就不会有这个问题

  • 相关阅读:
    Foj1675数论
    JSTL与EL之间的千丝万缕
    2013多校联合2 I Warm up 2(hdu 4619)
    ios视图切换之push与present混用
    Ruby设计模式透析之 —— 适配器(Adapter)
    晓说智能指针shared_ptr为何可以实现跨模块分配和释放内存
    CSS的力量
    MySQL-select 1;
    MySQL数据库-语言简介
    Eclipse开发工具提交代码
  • 原文地址:https://www.cnblogs.com/hustcpp/p/13067861.html
Copyright © 2011-2022 走看看