Linux软链

本文最后更新于:4 个月前

  • 写在前面

    在Linux系统中,内核为每一个新创建的文件分配一个inode(索引结点),每个文件有一个唯一的inode号。文件属性保存在inode里。

    在访问文件时,inode被复制到内存里,从而实现文件的快速访问。

  • 链接是什么?

    链接是一种共享文件和访问它的用户的若干目录项之间建立联系的一种方法。

    在windows下,我们称为快捷方式。

  • 硬链接

    如果一个inode对应多个文件名,则称这些文件为硬链接。

    换言之,硬链接就是一个文件的多个别名。也可以认为是以inode作为文件指针。

    • 特性:

      • 文件inode相同

      • 只能对已存在的文件进行创建

      • 不能交叉文件系统进行硬链接的创建

      • 不能对目录进行创建,只能对文件

        但是可以通过*通配符进行文件夹中的文件统一创建

      • 删除一个硬链接文件不影响其它相同inode文件,只是结点连接数减少。

        只要结点连接数不是0,文件就一直存在。

        而且此时就不再区分源文件和链接文件,只要任一文件被修改,所有文件都会同步修改。

      • 只有超级用户才可以为目录创建硬链接。

    • 创建硬链接

      link existingFile newFile

      这样当前目录下就出现了一个和existingFile一模一样的文件newFile

  • 软链接,也成为符号链接

    软链接就是一个普通文件,它有着自己的inode号。

    软链接就是另一文件的指向。可以认为是以文件路径名作为文件指针。

    • 特性:

      • 有自己的文件属性和权限

      • 可以对不存在的文件或目录创建

      • 可以交叉文件系统

      • 删除软链接并不影响原文件,但若原文件被删除,相关软链接则被称为死链接

    • 创建软链

      link -s sourceFile newFile
    • 删除软链

      注意软链接newFile后面不能加/,否则会删除原文件。

      rm -rf newFile
    • 修改软链接

      ln -snf sourceFile newFile

      这样就把newFile的指向指到了sourceFile的路径了。