链接的概念

在linux系统中,链接可分为两种:一种为硬链接,另一种为软链接或符号链接。在默认不带参数的情况下,执行ln命令创建的链接是硬链接。

如果使用ln  -s创建链接则为软链接,前面文件类型为l(字母L)的是软链接。

硬链接:ln  源文件  目标文件

软链接:ln  -s  源文件  目标文件(目标文件不能事先存在)

1.硬链接

硬链接是指通过索引节点(Inode)来进行链接。在Linux(ext2,ext3,ext4)文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,这个编号被称为索引节点编号(Index  Inode)简称Inode,即在系统中文件的编号。

在Linux文件系统中,多个文件名指向同一个索引节点(Inode)是正常且允许的。这种情况的文件就称为硬链接。提示:硬链接文件就相当于文件的另外一个入口。硬链接的作用之一是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件存储,如netapp存储中的快照功能就应用了这个原理,增加一个快照就多了一个硬链接)。为什么一个文件建立了硬链接就会防止数据误删呢?

因为文件系统(ext2)的原理是,只要文件的索引节点(Inode  Index)还有一个以上的硬链接。只删除其中一个硬链接(即仅仅删除了该文件的链接指向)并不影响索引节点本身和其它的链接(即数据文件实体并未被删除),只有当文件的最后一个链接被删除后,此时如果有新数据要存储到硬盘上时或者系统通过类似fsck做磁盘检查的时候。被删除文件的数据块及目录的链接才会被释放,空间被新数据占用并覆盖。此时,数据就再也无法找回了。也就是说,在Linux系统中,删除静态文件(没有进程调用)(目录也是文件)的条件是与之相关的所有硬链接文件均被删除。

硬链接的创建:直接执行命令“In  源文件  硬链接文件”,即可完成创建硬链接

硬链接知识小结:

1.具有相同inode节点号的多个文件是互为硬链接文件

2.删除硬链接文件或者删除源文件任意之一,文件实体并未被删除

3.只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除

4.当所有的硬链接文件及源文件被删除后,再存放新的数据会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收

5.硬链接文件就是文件的另一个入口(相当于超市的前门、后门一样)

6.可以通过给文件设置硬链接文件,来防止重要文件被误删

7.通过执行命令“In  源文件  硬链接文件”,即可完成创建硬链接

8.硬链接文件是普通文件,可以用rm命令删除

9.对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link),文件就被删除。i_link的查看方法(ls  -l结果的第三列就是)

2.软链接

软链接也称为符号链接。linux里的软链接文件就类似于windows系统中的快捷方式。linux里的软链接文件实际上是一个特殊的文件,文件类型是l。软链接文件实际上可以理解为一个文本文件,这个文件包含有软链接指向另一源文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。

例题:在配置Apache时,执行了./configure  --prefix=/application/apache2.2.17来编译apche,在make  install完成后,希望用户访问apache路径更简单,需要给/application/apache2.2.17目录做一个软链接/application/apache,使得内部开发或管理人员通过/application/apache就可以访问到apache的安装目录/application/apache2.2.17下的内容,请你给出实现的命令。(提示:apache为一个web服务)

解答:mkdir  /application/apache2.2.17  -p

ls  -ld  /application/apache2.2.17/

ln  -s  /application/apache2.2.17/  /application/apache

软链接的创建:

执行命令“ln  -s源文件  软链接文件”,即可完成创建软链接。

误区:创建软链接源文件是需要存在的,要创建的软链接文件是不能存在的,是要用ln命令创建的。

软链接知识小结:

1.软链接类似windows的快捷方式(可以通过readlink查看其指向)

2.软链接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体

3.删除源文件,软链接文件依然存在,但是无法访问指向的源文件路径内容了

4.失效的时候一般是白字红底闪烁提示。xxx_soft_link_file  -> xxx_file

5.执行命令“ln  -s源文件  软链接文件”,即可完成创建软链接(目标可能存在)

6.软链接和源文件是不同类型的文件,也是不同的文件。inode号也不相同

7.删除软链接文件可以用rm命令

测试结论:

1.删除软链接文件对源文件及硬链接文件无任何影响

2.删除硬链接文件对源文件及软链接文件无任何影响

3.删除源文件,对硬链接文件没有影响,但是会导致软链接文件失效,白字红底闪烁

4.同时删除源文件、硬链接文件,整个文件会真正的被删除

5.源文件和硬链接文件具有相同的索引节点,可以认为是同一个文件或一个文件的多个入口

6.源文件和软链接文件索引节点号不同,是不同的文件,软链接相当于源文件的快捷方式,含有源文件的位置指向

有关目录链接小结:

1.对于目录,不可以创建硬链接,但可以创建软链接

2.对于目录的软链接是生产场景运维中常用的技巧

3.目录的硬链接不能跨越文件系统(从硬链接原理可以理解)

4.每个目录下面都有一个硬链接“.”,和对应上级目录的硬链接“..”

5.在父目录里创建一个子目录,父目录的链接数增加1(子目录里都有..来指向父目录)。但是在父目录里创建文件,父目录的链接数不会增加

linux中软硬链接的区别?(图解)

linux文件属性软硬链接知识的更多相关文章

  1. Linux运维学习笔记-软硬链接知识总结

    文件链接   硬链接,通过索引节点来进行链接 硬链接原理图 硬链接的创建: 直接执行命令“ln 源文件 硬链接文件”,即可完成创建硬链接. 硬链接知识小结: 1.具有相同Inode节点号的多个文件是互 ...

  2. Linux创建软硬链接和打包压缩、解压缩

    软硬链接 ln = link make links between files 语法: 软链接 ln -s 源文件 链接名称 实例: ln -s HelloWord.java hw.lnk 给Hell ...

  3. linux之软硬链接【转】

    链接---------是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(S ...

  4. Linux的软硬链接

    Linux链接分为两种,一种是硬链接一种是符号链接. 硬链接: 硬链接是指通过索引节点来进行.再Linux文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点(Inode ...

  5. linux的软硬链接的特性

    硬链接的特征: 1.拥有相同的i节点和储存block块,可以看作是同一个文件 2.可以通过i节点识别 3.不能跨分区 4.不能针对目录使用 软链接的特征: 1.类似于windows的快捷方式 2.软链 ...

  6. linux文件属性软硬连接

    硬链接:ln 源文件 目标文件 软链接:ln -s 源文件 目标文件 硬链接总结: 1.具有相同inode节点号的多个文件互为硬链接文件 2.删除硬链接文件或者删除源文件任意之一,文件实体并未被删除. ...

  7. NO21 Llinux的文件种类与扩展名--文件权限--软硬链接--Linux删除文件原理

    Linux的文件种类与扩展名 一.文件种类:1.普通文件(regular file)第一个字符为[ - ]包括:①纯文本档(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本档.是因为内 ...

  8. Linux文件属性之软硬连接知识深度详解

    一.链接的概念 在Linux系统中,链接可分为两种:一种为硬链接(Hard Link),另一个位软连接或符号链接(Symbolic Link or link).我们在前面讲解过ln这个命令就是创建链接 ...

  9. Linux ll查看文件属性详解-软硬链接详解

    Linux文件属性及类型 [root@localhost ~]# ll anaconda-ks.cfg 文件类型 权限 硬连接数 文件的大小 文件的创建,修改时间 - rw-------. 1 roo ...

随机推荐

  1. loj2734「JOISC 2016 Day 2」女装大佬 || 洛谷P3615 如厕计划

    loj2734 洛谷P3615 http://218.5.5.242:9021/problem/185 不会做... 题解(来自ditoly): 这一步更详细的解释(来自kkksc03): 还是从后面 ...

  2. python 编程基础-字典类型和方法

    定义:字典是一种key-vlaue的数据类型. 字典特性KEY值必须是唯一,且可hash的(不可变数据类型),无索引,无序的(因为有KEY),查找速度快 语法:info = {'stu1101':&q ...

  3. MS SqlServer之Exec和EXEC SP_EXECUTESQL

    exec执行sql时字符串时,不能给变量赋值,如果要在sql里给变量赋值,请用EXEC SP_EXECUTESQL 示例: 通过 SP_EXECUTESQL 的第2个参数来定义有哪些参数 输出的加OU ...

  4. 算法导论课后习题解答 第一部分 练习1.1-1->1.1-5

    很高兴能和大家一起共同学习算法导论这本书.笔者将在业余时间把算法导论后面的题解以博文的形式展现出来希望能得到大家的支持谢谢.如果有可能我会做一些教学视频免费的供大家观看. 练习题选自算法导论中文第三版 ...

  5. Spring Security在标准登录表单中添加一个额外的字段

    概述 在本文中,我们将通过向标准登录表单添加额外字段来实现Spring Security的自定义身份验证方案. 我们将重点关注两种不同的方法,以展示框架的多功能性以及我们可以使用它的灵活方式. 我们的 ...

  6. Java编码优化

    Java编码优化 1.尽可能使用局部变量 调用方法时传递的参数以及在调用中创建的临时变量都保存在栈中速度较快,其他变 量,如静态变量.实例变量等,都在堆中创建,速度较慢.另外,栈中创建的变量,随 着方 ...

  7. h5点击区域和实际区域对不上

    点击区域和实际区域对不上 然后点击后触发的其实是上面的区域,会导致事件触发错误

  8. C#知识点-StopWatch-计时

    目录 简单介绍 基本用法 结尾 简单介绍 Stopwatch 可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间.一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使 ...

  9. ajax取到数据后如何拿到data.data中的属性值

    今天遇到的ajax取到数据后如何拿到data.data中的属性值的问题 比如拿到了数据 我要取出data中的name 题外话:当然取名最好别取什么奇怪的xiaobi

  10. 对flex-grow和flex-shrink的深入理解

    flex弹性布局,如果子元素宽度之和大于或者小于父元素宽度,空间就会存在剩余和不够,flex默认不换行,除非设置flex-wrap,那么这种情况下,有两个重要的属性,flex-grow和flex-sh ...