1.Linux中链接概念
Linux链接分两种,一种被称为软(符号)链接(Symbolic Link),另一种被称为硬链接(Hard Link)。默认情况下,ln命令产生硬链接。
inode的概念:inode是文件系统中存储文件元信息的区域,中文叫节点索引,每个节点索引包含了文件的创建者,大小,日期等等。
其本质为结构体,存储文件的属性信息。如:权限、类型、大小、时间、用户、盘块位置……也叫作文件属性管理结构,大多数的 inode 都存储在磁盘上。少量常用、近期使用的 inode 会被缓存到内存中。
可以通过ls -i 命令查看inode的值
- 软链接文件类似于Windows的快捷方式。它实际上是一个特殊的文件。在软连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
- 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的索引节点变为0,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
2.基本使用方法
- 创建软链
ln -s 文件名 链接名
- 创建硬链
ln 文件名 链接名
3.使用场景
- 软链接一般被用来设置可执行文件的快捷方式的路径;
- 硬链接一般是比较重要的文件我们担心文件被误删除且传统复制备份方式占用磁盘空间会造成浪费,可以使用硬链做备份来解决;
4.软链接和硬链接的区别
- 软链接相当于建立了一个新的快捷方式文件,该文件有自己的名称和inode以及物理存储的文件数据,文件数据里记录着如何跳转的设置数据,访问该快捷文件会被重新定向到原始文件,删除原始文件,软链文件失效;硬链接相当于为当前文件名对应的文件再建立了一个文件别名,别名对应的inode以及物理数据都是一样的,一旦建立,我们甚至根本无法区分谁是原始文件的原始名称,删除文件的其中一个名称,文件不会丢失,除非把所有的名称都删除。
- 硬链接只是文件的一个别名,所以不重复占用内存;软链接是一个访问文件的快捷方式文件,文件内只包含快捷指向信息,所以占用很小的内存。
- 软链接的文件权限和源文件可以不一样,硬链接文件权限是一样的,因为他们本来就是一个文件的不同名称而已。
- 软链接可以跨文件系统,硬链接必须是同一个文件系统。
- 软链接可以为文件和目录创建链接,硬链接只能为文件创建链接。