zoukankan      html  css  js  c++  java
  • 存储系列之 共享文件:链接link

    一、link与unlink的定义

    1、link

    link是Linux文件系统目录管理的一个系统调用,创建一个链接,该链接只是创建一个目录项上文ext2的介绍中提到过目录项是<文件名,inode号>的组合,所以链接所建的目录项的文件名可以有一个新的文件名,但是inode号还是被链接的的那个文件的inode号。但同时实现了文件的共享。链接的强大功能赋予了 Linux 文件系统灵活性,因为一切皆是文件。

    举例如下图,查看lib64下的uuid库文件,libuuid.so.1为libuuid.so.1.3.0的链接,两个文件都是指向libuuid.so.1.3.0的inode号,我们在版本升级和兼容性方面经常这样使用

    2、unlink

    unlink系统调用是删除其中一个目录项,那么如果另一个目录项依然存在,相关的文件也依然存在。如果所有的目录项都被删除,Linux发现没有任何目录项指向该文件(在inode中有一个域,记录指向该文件的目录项数),那么该文件从磁盘上被删除

     

    二、硬链接与软链接

    Linux 文件系统中有两种链接link:硬链接(hard link)和软链接(soft link,或者符号链接symbolic link)。

    shell命令,软链接:ln –s 源文件 目标文件;硬链接: ln 源文件 目标文件,没有参数-s。

    1、硬链接

    我们前面讨论的方式都是硬链接。

    硬链接的缺点

    (1)目录和inode是属于同一个文件系统,即同一个分区(原理请查阅上一篇),因此在一个文件系统中的目录不能指向另一个文件系统当中的inode。所以硬链接不可以跨越文件系统。

    (2)一个文件只能有一个所有者和一组权限,如果是另外的用户因为权限不够,将无法删除文件

    2、软链接

    基于硬链接的限制,提出了软连接,与硬链接不同的是,它会创建一个文件,只是文件的数据是另一个文件的路径名。网上有人说软连接是引用硬链接,这个说法并不准确,只能说是其中的方式之一,因为路径名可以是任意一个文件,甚至还可以是一个不存在的文件名。

    这种连接可以跨越不同的文件系统。在Windows系统中,它被称为快捷方式(shortcut)。而在苹果的Mac OS中,它被称为别名(alias)。

     

     

    软链接的特点

     (1)软链接有自己的文件属性及权限等;

    (2)可对不存在的文件或目录创建软链接;

    (3)软链接可交叉文件系统;

    (4)软链接可对文件或目录创建;

    (5)创建软链接时,链接计数 i_nlink 不会增加

    软链接的缺点

    当一个文件被删除时或者被改了名字,相应的链接就会变得无效(即死链接dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

     

     

    参考资料:

    《操作系统设计与实现》第三版 上册。

    https://www.cnblogs.com/invisible2/p/6992420.html

     

  • 相关阅读:
    再谈加密-RSA非对称加密的理解和使用
    WEB开发中的字符集和编码
    网页实时聊天之PHP实现websocket
    PHP中的回调函数和匿名函数
    shell实现SSH自动登陆
    初探PHP多进程
    PHP的openssl加密扩展使用小结
    搭建自己的PHP框架心得(三)
    docker 快速搭建Nexus3
    用图形数据库Neo4j 设计权限模块
  • 原文地址:https://www.cnblogs.com/orange-CC/p/12689376.html
Copyright © 2011-2022 走看看