ln [选项] 源文件 目标文件
选项:
-s:建立软链接文件。如果不加 “-s” 选项,则建立硬链接文件;
软链接的删除 在软连接的对象是目录下,切记不要自动补全删除,如果是rm -rf test/ 那么原目录下的文件都会被删除!!!
rm -rf test #切记不要自动补全
一句话概括就是:软链接用windows中的概念来理解就相当于一个快捷方式;而硬链接实际上是文件的一个别名
,硬链接指向的内容和原文件名所指向的是同一片硬盘空间软硬链接的理解
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接 与软链接 ,硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。
从挂载点不同入手:
硬链接,只能应用于文件,而不能应用于目录,而且不能跨文件系统(即分区)。不可以在不同文件系统的文件间建立链接。
软链接:可以跨文件系统
根据dictionary的对应关系找到该文件的inode(dictionary简单理解就是一张表,存储文件到inode号的映射)。根据inode,找到inodeTable,根据inodeTable中的对应关系,找到对应的block。
补充:文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成一个 block
理解一
由这张图我们发现无论硬链接和软连接都由 链接名字+inode+block 组成,不同的是软连接block里面的内容是一个地址(硬链接的地址或者说是源文件的地址),软硬链接他们的block是不同的,系统一次性读取一个块block,所以读取到软连接根据软连接指向的block可以找到真正源文件(硬链接),反之如果读到跨分区block的硬链接,硬链接指向的inode号还是原来的inode号,但是块block在原来的block里,导致硬链接组曲不到真正的源文件
理解二
硬链接的文件是同分区下指向同一个inode的两个文件,故硬链接不能夸分区.那当我在A分区下为文件test建立硬链接test1的时候,我访问test1,test文件的atime也会跟着改变,那么当我把test1移动到另一个分区的时候.test1的inode号虽然没变.但是test1文件属性(block变了)的变化已经不会对test文件造成影响了,说明跨分区生成了新的inode元数据库,跟之前分区的inode元数据就没有关系
关于为什么不能跨文件系统?我是这样理解的。首先,不同的文件系统的文件管理方式不同,甚至有些文件系统不是索引文件系统,并不一定两个文件系统的inode有相同的含义。再者,即使有相同inode含义,硬链接的几个文件,具有相同的inode号码。不同文件系统中,也可能有使用该inode号的文件,这将产生矛盾。
硬链接不能对目录创建受限于文件系统的设计。
Linux 文件系统中的目录均隐藏了两个特殊的目录,当前目录.和父目录…其实是两个硬链接,若系统运行对目录创建硬链接,则会产生目录环。
目录是种特殊的文件,普通文件不会存放自己的位置信息,只有一个inode [x]的数据结构指向文件,其中,x是文件的inode索引号码。 而我们ls一个目录,会发现目录文件最开始的两条数据是“.“和”…",也就是说,目录文件在文件里 已经写死了自己在文件系统中的位置 允许目录的hard link,也就意味着某个目录的hard link集合,只有一份是对的,显然这没有意义。
谢邀。 既然是刚学习,你得理解linux文件存储和硬链接的实现原理。
软连接就相当于我们win中的快捷方式即如果你软连接一个目录只是一个目录的快捷方式到指定位置,操作系统找这个快捷方式会直接找到真实目录下的文件。但是硬连接的话,相当于镜像的方式,你创建一个目录的硬连接之后,操作系统需要把这个目录下所有的文件都要做一次硬连接(复制一份过去),这样操作系统在访问这个链接的时候要不断去遍历,大大增加复杂度,而且很容易进入死循环。现在linux没有很好支持这个 所以 不支持。
(答案来源:狂奔的蜗牛 链接:https://www.zhihu.com/question/50223526/answer/119998834 )
对RHCE这个目录创建快捷方式,打开的是原来的文件夹,并没有打开出现的直接是这三个文件
1)硬链接原文件&链接文件共用一个inode号,说明他们是同一个文件;而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;
2)链接数目(inode)是不一样的,软链接的链接数目不会增加,硬链接会相应的加一;
3)在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系,就像文件被复制了一份一样;
4)文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,而这里软链接显示的大小与原文件就不同了
硬链接和源文件是同一份文件,而软连接是独立的文件,类似于快捷方式,存储着源文件的位置信息便于指向。
使用限制上,不能对目录创建硬链接,不能对不同文件系统创建硬链接,不能对不存在的文件创建硬链接;
可以对目录创建软连接,可以跨文件系统创建软连接,可以对不存在的文件创建软连接。
再次总结:不同点分三个关键词:
inode(共用一个innode, 链接数目)
文件(文件大小、文件属性、目录文件、不存在的文件、不同文件系统)
文件的作用:
操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。
链接文件的作用:
链接为 Linux 系统解决了文件的共享使用
硬链接的作用
允许一个文件拥有多个有效路径名,对重要的文件建立硬链接,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。
实现在一个文件系统内的文件共享,解决存储空间。
软链接的作用
存在是为了解决硬链接存在的两个缺点
不能对目录进行链接;
不能跨文件系统进行了链接。
便于文件的管理。比如把一个复杂路径下的文件链接到一个简单路径下方便用户访问,类似于windows下的桌面快捷键方式。
节省空间解决空间不足问题。因为软链接可以跨文件系统,所以当某个文件文件系统空间已经用完了,但是现在必须在该文件系统下,创建一个新的目录并存储大量的文件时,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中。
链接的作用对象是文件名
根据文件属性,输入命令ll,第一个字母是l的是链接文件,并且是软链接文件,如果没有表示就是硬链接文件或者普通文件
就进入到软链接目录里ls查看,软链接名字的文件是否为浅蓝色。