彻底理解Linux系统下文件的软链接和硬链接的区别 - Go语言中文社区

彻底理解Linux系统下文件的软链接和硬链接的区别


欢迎关注鄙人公众号,技术干货随时看!
在这里插入图片描述

  最近有同事来问鄙人,通过ln命令创建的文件的软链接和硬链接到底有啥区别,使用起来功能上貌似是一样的,感觉都像是文件的一个别名而已,而且软链接用的居多。网络上流传的资料,大多都是胡扯级别的:软链文件与源文件内容不同、硬链接会创建独立的虚拟文件、inode不同或相同之类的。建立文件链接的目的一般是:当有多处使用同一个文件时,如果文件的位置或名称变更了,每一处都要随着更改,如果是使用软链接,则只需变更下软链接就可以了。 下面我们通过示例来彻底理清软链接和硬链接的区别与联系。

命令用法

  1. 在/opt/study目录下创建一个新文件file,内容是:atom atom atom
    在这里插入图片描述

  2. 建立软链接
    在这里插入图片描述
      我们可以看到,成功创建了指向file的软链接soft_file

  3. 建立硬链接
    在这里插入图片描述
      我们可以看到,成功创建了指向file的硬链接hard_file

区别与联系

  1. 软链接soft_file与硬链接hard_file,本质上都是文件。因为在linux系统下,一切都是文件,包括文档、目录、soket、终端。

  2. inode上有本质的区别。inode是表示文件的唯一数字,这个数字由内核分配给文件系统中的每一个对象,一个inode可以指向多个对象,拥有相同的inode的对象会保持同步更新,也就是内容是完全一样的,要查看inode,给ls命令加上-i参数即可。
    在这里插入图片描述
      我们可以看到,软链接的inode与源文件不同,这表明软链接本质上是一个独立的文件,但文件的内容只是执行源文件的一个引用或者说指针,并不实际存储源文件的内容,不管源文件的内容有多大,软链接文件都是非常小的,其实可以理解为,文件的一个快捷方式或别名。
      硬链接hard_file的inode与源文件相同,大小相同,时间戳相同。硬链接本质上源文件的一个拷贝,占用的存储空间与源文件相同,同时硬链接与源文件会保持同步更新,更二者之一,另一个的内容和时间戳都会同步更新。

  3. 软链接可以指向目录,硬链接只能指向文件。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhaojianting/article/details/100689798
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢