Linux 中软链接和硬链接的区别

一:基本使用方法

#  创建软链
ln -s  filename linkfilename
# 创建硬链
ln  filename linkfilename

二:两者区别

这里我们需要介绍inode的概念:inode是文件系统中存储文件元信息的区域,中文叫节点索引,每个节点索引包含了文件的创建者,大小,日期等等。可以通过ls -i file 命令查看inode的值

1.一个文件从外到内分为:我们可以看到“文件名称”,文件名称对应一个inode,inode对应一个物理存储的文件数据 ,软链接相当于建立了一个新的快捷方式文件,该文件有自己的名称和inode以及物理存储的文件数据,文件数据里记录着如何跳转的设置数据,访问该快捷文件会被重新定向到原始文件,删除原始文件,软链文件失效;硬链接相当于为当前文件名对应的文件再建立了一个文件别名,别名对应的inode以及物理数据都是一样的,一旦建立,我们甚至根本无法区分谁是原始文件的原始名称,删除文件的其中一个名称,文件不会丢失,除非把所有的名称都删除。

如下图:hard link(硬链) 和file 都指向同一个 inode,inode对应了一个实际物理存储的文件。soft link(软链) 对应一个新的inode, 新的inode对应一个新的物理存储文件,物理存储文件又指向了目标文件 file。

Linux 中软链接和硬链接的区别_第1张图片
2.软链接可以为文件和目录(哪怕是不存在的)创建链接,硬链接只能为文件创建链接。
3.软链接可以跨文件系统,硬链接必须是同一个文件系统
4. 硬链接因为只是文件的一个别名,所以不重复占用内存,软链接因为只是一个访问文件的快捷方式文件,文件内只包含快捷指向信息,所以占用很小的内存。
5. 软链接的文件权限和源文件可以不一样,硬链接文件权限肯定是一样的,因为他们本来就是一个文件的不同名称而已。

三:使用场景
一般比较重要的文件我们担心文件被误删除且传统复制备份方式占用double数量的空间会造成浪费,可以使用硬链做备份来解决;软链接一般被用来设置可执行文件的快捷方式的路径。

你可能感兴趣的:(Linux,shell)