Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

硬连接 ln /软链接 ln -s

  • ln psql10 psql 创建硬链接

    • 创建一个硬链接名为 psql,相当于额外为psql10文件创建了一个目录项,使其指向的底层内容相等,相当于额外的一个引用
    • 好处
      • 可以为文件指定一个别名去访问
    • 限制
      • 这里的psql10,只能是文件,不能是目录
      • 不能跨物理设备去引用,即必须要在一个磁盘分区内
      • 删除掉 psql 后,只是减少了一个目录项(即引用计数-1),直到所有的硬链接被删除,才能把源文件彻底在物理上删除
    • ls显示目录情况
      -rw-r--r-- 2 me me 1650 2018-01-10 16:33 psql10    
      -rw-r--r-- 2 me me 1650 2018-01-10 16:33 psql
      
      • 发现上面有数字2,就代表了这里硬链接的数量(包括了源文件名本身,因为源文件名也是通过硬链接创建了)
    • 怎么知道这两个指向同样的底层内容呢?
      • 可以直接看1650这个大小去预估
      • 但更建议通过ls -li去输出下面的结果去查验
        12353538 -rw-r--r-- 2 me me 1650 2018-01-10 16:33 psql10    
        12353538 -rw-r--r-- 2 me me 1650 2018-01-10 16:33 psql
        
        • 发现上面有数字12353538,这个就是inode节点号,相同的话,就是指向同一个底层内容
  • ln -s psql10 psql 创建软链接【推荐】

    • 创建一个软链接名为 psql,使其实际指向的是 psql10
    • 也叫符号链接
    • 好处
      • 弥补了硬链接的不足
        • psql10 可以是目录
        • 可以跨物理设备引用
      • 在更换新的版本,比如 psql11 时,就可以用下面的命令去覆盖原有的 psql10,当其他地方引用了 psql,升级时就不用做任何更改
        ln -sf psql11 psql
        
        • -f参数 会在已有psql软链接时强行覆盖
    • ls显示目录情况
      lrwxrwxrwx 1 me me 6 2018-01-10 16:35 psql -> psql10    
      
      • 发现上面有一个箭头,即指向的实际文件或目录
      • 同时最开头有一个l字母,代表了这是一条软链接