linux 硬软链接区别

linux的软连接(symbolic link or soft link)类似于windows的快捷方式;而硬链接(hard link)机制有点像copy,不过不同的是,带有同步机制,一处修改,在另一处都会看到,并且一处删除对应文件后,并不影响另一处的正常使用。

硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。

我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名。

由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件(引用计数)。

硬链接不能对目录创建是受限于文件系统的设计。现 Linux 文件系统中的目录均隐藏了两个个特殊的目录:当前目录(.)与父目录(..)。查看这两个特殊目录的 inode 号可知其实这两目录就是两个硬链接。若系统允许对目录创建硬链接,则会产生目录环。

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制:

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

Linux 下共存的基础就是 Linux VFS(Virtual File System 又称 Virtual Filesystem Switch),即虚拟文件系统。VFS 作为一个通用的文件系统,抽象了文件系统的四个基本概念:文件、目录项 (dentry)、索引节点 (inode) 及挂载点,其在内核中为用户空间层的文件系统提供了相关的接口。VFS 实现了 open()、read() 等系统调并使得 cp 等用户空间程序可跨文件系统。VFS 真正实现了上述内容中:在 Linux 中除进程之外一切皆是文件。

转载于:https://www.cnblogs.com/onlysun/p/4507423.html

linux 硬软链接区别相关推荐

  1. linux中软链接和硬链接,Linux中软链接和硬链接的区别

    Linux中软链接和硬链接的区别 链接文件: Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link). Inode 文 ...

  2. linux什么是硬链接和软连接区别,Linux硬链接和软连接的区别与总结

    图示软硬链接的区别 有关硬链接的总结 具有相同inode节点号的多个文件互为硬链接文件: 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除: 只有删除了源文件和所有对应的硬链接文件,文件实体才 ...

  3. linux 硬链接 软链接_Linux中的软链接–完整参考

    linux 硬链接 软链接 A link in Linux systems are pointers to a file or a directory. There are two types of ...

  4. Linux创建软链接和硬链接的命令

    Linux创建软链接和硬链接的命令 link oldfile newfile # 硬链接 ln oldfile newfile # 硬链接 ln -s old.file soft.link # 软链接 ...

  5. linux查看硬链接的对应文件,区分Linux硬链接与软链接

    在Linux中,连接文件有两种,一种类似于Windows的快捷方式,可以让你快速地链接到目标文件(或目录),这种称为软链接(soft link),也叫作符号链接(symbolic link):另一种则 ...

  6. linux与linux的连接,linux 硬链接与软连接

    硬链接与软连接的创建: 创建连接用到的命令是 ln, 带选项 -s 是 创建symbolic link 软连接, 不带 -s 是创建硬链接. 硬链接与软连接的区别: 硬链接与源文件的 inode 相同 ...

  7. 总结软连接和硬连接区别

    总结软连接和硬连接区别. 硬链接和软链接的区别 1.本质不同 硬链接:同一个文件,多个名称. ​软链接:不同的文件. 2.跨分区 硬链接:不支持跨分区. 软链接:支持跨分区. 3.目录 硬链接:不支持 ...

  8. java socket windows linux,socket在windows下和linux下的区别

    windows到Linux代码移植遇到的问题 1.一些常用函数的移植http://www.vckbase.com/document/viewdoc/?id=1586 2.网络------转载& ...

  9. Linux系统下区别对比(~、/home与/root)

    Linux系统下区别对比(~./home与/root) Linux下~./home与/root的区别: 1.在root用户下,~等同于/root 2.在普通用户下,~等同于/home/当前的普通用户名 ...

最新文章

  1. objectdatasource中delete的尴尬。
  2. Harmonic Number(调和级数+欧拉常数)
  3. secureCrt个人操作手册
  4. ABAP常用Function
  5. 大数据图数据库之数据分片
  6. 腾讯急招多名.NET Core,5年30k!
  7. Dapper防sql注入,同一条SQL支持多种数据库
  8. 【搜索/推荐排序】总结
  9. Tcp keepalive详解
  10. 数字图像处理技术详解程序_FCA在自动驾驶和智能网联技术最近五年变革
  11. 如何 给给软件开发 添加 代理_如何从“菜鸟码农”变成“一线架构师”?
  12. xiao776php,《xiao 776》_xiao 776_NEWS下载网
  13. NSGA-Ⅱ算法原理
  14. 计算机网络习题集与习题解析 pdf,计算机网络习题集与答案.pdf
  15. tolua unity 报错_关于LUA+Unity开发_toLua篇【二】
  16. 20 行代码编写一个简单的端口扫描器
  17. 词汇导入词根词缀字典
  18. 求两个数中的最大值最小值算法
  19. VLSM子网掩码详解!!
  20. 计算机技术与移动支付的关系,移动支付的破与立

热门文章

  1. lua 字符串分割_Lua 分隔字符串,可以设置指定分隔符
  2. python 泛型_Python插件 - 如何创建C#泛型List
  3. tif文件转pdf_PPT怎么转换成PDF文件?可以帮到你的PPT转PDF方法
  4. h5封装去底部_干货分享 | 一步一步教你在SpringBoot中集成微信支付H5支付
  5. VC++动态链接库(DLL)编程深入浅出
  6. Codeforces 1479A. Searching Local Minimum(注意输入+二分)
  7. libevent源码学习-----统一事件源及信号绑定函数
  8. 用java程序完成从kafka队列读取消息到sparkstreaming再从sparkstreaming里把数据导入mysql中
  9. Xcode 9 新建的工程如何支持 iOS 8
  10. Pixhawk原生固件PX4之串口添加读取传感器实现