鄙人的新书《Elasticsearch权威指南》正式出版发行,欢迎购买!本书由华为、中兴高级技术专家全面审读并撰序,助您挑战百万年薪 购书链接:
《Elasticsearch权威指南》
欢迎关注鄙人公众号,技术干货随时看!
最近有同事来问鄙人,通过ln命令创建的文件的软链接和硬链接到底有啥区别,使用起来功能上貌似是一样的,感觉都像是文件的一个别名而已,而且软链接用的居多。网络上流传的资料,大多都是胡扯级别的:软链文件与源文件内容不同、硬链接会创建独立的虚拟文件、inode不同或相同之类的。建立文件链接的目的一般是:当有多处使用同一个文件时,如果文件的位置或名称变更了,每一处都要随着更改,如果是使用软链接,则只需变更下软链接就可以了。 下面我们通过示例来彻底理清软链接和硬链接的区别与联系。
命令用法
-
在/opt/study目录下创建一个新文件file,内容是:atom atom atom
-
建立软链接
我们可以看到,成功创建了指向file的软链接soft_file -
建立硬链接
我们可以看到,成功创建了指向file的硬链接hard_file
区别与联系
-
软链接soft_file与硬链接hard_file,本质上都是文件。因为在linux系统下,一切都是文件,包括文档、目录、soket、终端。
-
inode上有本质的区别。inode是表示文件的唯一数字,这个数字由内核分配给文件系统中的每一个对象,一个inode可以指向多个对象,拥有相同的inode的对象会保持同步更新,也就是内容是完全一样的,要查看inode,给ls命令加上-i参数即可。
我们可以看到,软链接的inode与源文件不同,这表明软链接本质上是一个独立的文件,但文件的内容只是执行源文件的一个引用或者说指针,并不实际存储源文件的内容,不管源文件的内容有多大,软链接文件都是非常小的,其实可以理解为,文件的一个快捷方式或别名。
硬链接hard_file的inode与源文件相同,大小相同,时间戳相同。硬链接本质上源文件的一个拷贝,占用的存储空间与源文件相同,同时硬链接与源文件会保持同步更新,更二者之一,另一个的内容和时间戳都会同步更新。 -
软链接可以指向目录,硬链接只能指向文件。