当前位置: 首页 > Web前端 > JavaScript

硬链接和软链接有什么区别?

时间:2023-03-27 12:38:46 JavaScript

大家好,我是万天。硬链接和软链接是链接硬盘文件的两种方法。硬链接本质上是直接引用源文件inode的文件的同步副本。软链接直接引用源文件,源文件再引用inode,更像是源文件的快捷方式。那么硬链接和软链接有什么区别呢?inode要理解硬链接和软链接的区别,首先要了解inode。索引节点是描述文件或目录属性的数据库,如元信息、硬盘物理地址等。操作系统通过索引节点可以检索文件权限信息、物理地址等信息。当一个文件从一个文件夹移动到另一个文件夹时,文件会被移动到硬盘上的另一个位置,文件的索引节点值也会自动改变。硬链接硬链接直接通过inode引用文件。硬链接只能用于文件,不能用于目录。硬链接(HardLink)起到源文件的副本或镜像的作用。可以访问源文件的数据。如果源文件被删除,硬链接仍然可以访问源文件的数据。下面通过一个操作示例具体了解硬链接:创建并访问源文件:$touchsourcefile&&echo"Thisisaplaintextfile.">sourcefile$catsourcefile这是一个纯文本文件。创建硬链接:$lnsourcefilehardfile$ls-li79448344-rw-r--r--2joebonstaff2752315:47hardfile79448344-rw-r--r--2joebonstaff2752315:47sourcefile输出的最左边一列是文件的inode值,它指向物理硬盘的一块。文件系统会维护一个引用计数,只要有文件指向这个块,inode就不会从硬盘上消失。我们可以看到源文件和硬链接文件的inode值是一样的,都指向同一个硬盘块。删除源文件:$rmsourcefile$cathardfile这是一个纯文本文件。我们可以看到删除源文件后,硬链接文件仍然可以正常访问。这是因为删除源文件只是删除了源文件对inode的引用,文件系统统计了inode引用,只要还有inode引用,inode就不会被删除。软链接软链接本质上是源文件的快捷方式,指向源文件本身,而不是源文件的inode值。软链接可以同时用于文件和目录,也可以在不同的硬盘或容器之间使用。软链接(SoftLink或SymbolicLink)起到源文件指针的作用。无法访问源文件数据。如果源文件被删除,软链接将指向一个不再存在的文件地址。下面用一个操作例子来具体理解硬链接:创建硬链接:$ln-ssourcefilesoftfile$ls-li79450053lrwxr-xr-x1joebonstaff1052315:56softfile->sourcefile79448344-rw-r--r--2joebonstaff2752315:47sourcefile我们可以看到软链接的inode和源文件是不一样的。删除源文件:$rmsourcefile$catsoftfilecat:softfile:Nosuchfileordirectory因为软链接直接指向源文件而不是指向inode,所以只要删除源文件,软链接文件无法正常访问,即使源文件指向的inode此时可能仍然存在。区别一张图说明了硬链接和软链接的本质区别:硬链接直接引用源文件引用的inode,软链接直接引用源文件。这种核心差异也造就了以下许多不同的特征。总结一下硬链接和软链接的区别:比较参数硬链接软链接inode号硬链接文件和源文件有相同的inode号软链接文件和源文件有不同的inode号目录硬链接不允许链接目录软链接允许链接目录。文件系统不能跨文件系统使用。数据源文件内容可以跨文件系统使用。软链接在硬链接文件中只能指向源文件,不保留文件。删除源文件后,删除源文件,同时删除硬链接文件。仍然可以访问源文件数据源文件被删除,软链接将无法访问源文件数据越来越慢其中,inodenumber:全称索引节点号,是文件在文件中的唯一idLinux/Unix系统;和软链接硬链接和软(或符号)链接的区别HardlinksandSymboliclinks—Acomparison