在Linux系统中,连接分为两种:一种被称为硬连接(Hard Link),另外一种被称为软连接或符号连接(Symbolic Link)。在默认不带参数的状况下,执行ln命令建立的是硬连接
是指经过索引节点来进行连接。在linux的文件系统中,保存在磁盘分区中的文件不论是什么类型都会给他分配一个编号,这个编号被称为索引节点号(Inode Index) 在Linux系统中,多个文件名指向同一个索引节点是正常且容许的。通常这种连接就称为硬连接。硬连接的做用之一是容许一个文件拥有多个有效路径名,这样用户就能够创建硬连接到重要的文件,以防止“误删”源数据(不少硬件,如netapp存储中的快照功能就应用了这个原理,增长一个快照就多了一个硬连接)。为何为文件建立了一个硬连接就会防止数据误删呢? 由于文件系统的原理是,只要文件的索引节点还有一个以上的连接(仅仅删除了该文件指向)。只删除其中一个连接并不影响索引节点自己和其余的连接(既数据文件实体并未被删除),只有当最后一个连接呗删除的后,此时若是有新的数据存储到硬盘时。被删除文件的数据块及目录的连接才会被释放,空间被新数据占用覆盖。此时,数据就再也没法找回了。也就是说,在Linux系统中,删除文件(其实目录也是文件)的条件是与之相关的全部硬连接文件均被删除。
软连接有时也被称为符号连接(Symbolic Link)。软连接文件就相似于Windows系统下的快捷方式。它其实是一个特殊的文件。在软连接中,软连接文件实际上就是一个文本文件,这个问价中包含有软连接指向另外一个文件的位置信息内容,所以,经过访问这个“快捷方式”就能够迅速定位到软连接所指向的源文件实体。 mkdir /test && cd /test&& touch testfile ln testfile testfile_hard_link ln -s testfile testfile_soft_link ls -li * 能够查看到inode信息
总结:node
一、硬连接与原文件的inode节点号相同。而软链接的inode节点号不相同。 二、目录没法建立硬连接,可是能够建立软链接 三、软链接能够跨分区,硬连接不能够。 四、硬连接原文件删除,文件依然能够访问。软链接原文件删除,连接文件失效
一、软链接的生产使用案例:linux
在咱们编译apache软件时,编译路径带着版本号/application/apache2.2.21(为了区分版本用,所以路径也比较长),而在访问目录时又但愿简介,此时就能够经过创建一个简单的软连接路径文件,来达到方便访问的目的。
二、硬连接的生产使用案例:apache
硬件存储的快照功能。或者为备份文件建立多个硬连接文件,防止误删除。
三、文件系统的知识:app
文件的访问方式:filename->index(inode) index->data derectory 123 345 567 789 indode table blocks 文件系统的磁盘布局 bootBlock block group0 .... block group N Blocke group0: super block、 Group Descriptrs 、Data block Bitmap、Inode Table、Data blocks "进程还占用文件,这时候断电了!" Kernel没有机会回收文件所占用的磁盘空间了 磁盘空间可能仍被标记为“已用” 文件系统可能会不一致 死文件,谁也访问不到了:已经没有文件名指向这些空间了 须要FSCK或其余机制回收空间
一、Linux同过mkdir命令建立一个新目录/test/ 它的硬连接数怎么查看布局
ls -ld /test/ 权限后面的 数字为硬连接的数量为2. 缘由:建立的目录自己为一个硬连接 新建目录下的隐藏目录(点号)为建立的新目录又是一个连接,因此为2个硬连接 ls -lai 能够查看验证!
提示:硬连接就至关于文件的另外一个入口。code