链接概念:

分为软链接和硬链接,文件类型为 l

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

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

ln -s /root/ /tmp/root    # 给 /root 目录创建一个软链接到 /tmp目录下

readlink /tmp/root        # 指出链接链向地址

touch test.sh    # 创建测试数据

ln test.sh /tmp/test.sh    # 创建硬链接

ll -i test.sh  /tmp/test.sh     # 检查两个文件的i节点

  

硬链接:

  硬链接是通过索引节点来进行链接,在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种情况的文件被称为硬链接,硬链接相当于文件的另外一个入口,建立硬链接防止误删,有备份作用

ln /etc/hosts /tmp/oldboy.host          #对于这个文件,创建一个硬链接,也可以说创建了一个文件新的入口 /tmp/oldboy.host

链接知识总结:

  1. 具有相同inode节点号的多个文件互为硬链接文件,创建了硬链接相当于文件实体多了入口
  2. 只有删除源文件及对应的所有对应的硬链接文件,文件实体才会被删除,删除源文件的其中一个或几个硬链接,文件实体不会删除。当删除成功时候,该文件位置没有被重新占用或fsck检查之前,文件数据是有可能恢复
  3. 通过给文件创建硬链接,防止重要文件被误删
  4. 硬链接文件时普通文件,可以被rm删除
  5. 静态文件(没有进程进行调用), i_link 为0的时候,文件将被删除
  6. 删除源文件,软链接文件依旧存在,但是找不到文件,会红白闪烁
  7. 多个软链接指向同一个文件,单这些软链接inode不同,属于不同文件
  8. 软链接的文件类型为l,硬链接文件类型和源文件一样

对文件链接:

  1. 文件可以创建硬链接,增加了文件的入口,但是创建硬链接不能跨分区

  2. 文件可以创建软链接,但只能在同级目录,出来同级目录失效

  3. 其实文件名本身就是个硬链接,也是文件入口

对于目录链接

  1. 目录不能创建硬链接,目录可以创建软链接
  2. 目录的软链接在生产场景经常使用,硬链接少用
  3. 每个目录下都会有两个硬链接, . 当前目录, .. 上级目录

链接总结: 

  

  1. 为文件创建硬链接,增加文件读数据入口;为目录创建软链接,可以直接通过软链接进入目录

  2. 删除源文件名,只要还有该源文件的硬链接在,通过硬链接还是可以访问到数据,并没有被删除,为什么?

   

    当 i_link = 0 和 i_count = 0 的时候,就像把文件数据关进了小黑屋,被回收了,就删除了

  3. 删除软链接,对源文件没有任何的影响,删除源文件名,指向该源文件的软链接失效

  4. 硬链接 指向的inode相同,软链接有自己的 inode 和block

  

linux_链接文件的更多相关文章

  1. 复制”链接文件“到虚拟机(VirtualBox)的”共享文件夹“时报错:创建符号链接时报错:只读文件系统

    问题描述: 1.Ubuntu 中的 /www/目录,是宿主主机 Windows 7 以“共享文件夹”的形式挂载的: 2./etc/php.ini 是 /opt/software/php/etc/php ...

  2. visual studio 添加链接文件

    本文转载http://blog.163.com/zhongpenghua@yeah/blog/static/87727415201282432345613/   那个有个箭头的文件就是链接文件了,添加 ...

  3. Windows系统创建硬链接文件

    源文件夹:E:\深海 创建新硬链接文件夹:D:\微云同步盘\719179409\4-工作资料\深海   打开命令提示符(管理员) 敲入以下命令:   创建成功后,进入目录 D:\微云同步盘\71917 ...

  4. Linux命令--链接文件的那些事

    linux 链接ln的使用 linux操作系统下ln的使用方式: ln [option] source_file dest_file #source_file是待建立链接文件的文件,dest_file ...

  5. pwd显示链接文件的真实路径

    1.pwd用于显示当前工作路径 2.pwd -P 用于显示当前的实际工作路径(主要用于链接文件) 加参数难以了理解,看个例子就明白了: 进入链接文件,pwd显示的是链接文件所在的路径,而你不是链接文件 ...

  6. Linux下的链接文件

    整理自<鸟哥的Linux私房菜>,整理者:华科小涛http://www.cnblogs.com/hust-ghtao/ Linux中的链接文件分为两种:硬链接和软链接.软链接(symbol ...

  7. Linux的链接文件-ln命令

    Linux的链接文件 使用ln命令来创建链接文件(link) Linux链接分两种:硬链接(Hard Link),符号链接(Symbolic Link) 默认情况下,ln命令产生硬链接. [root@ ...

  8. tar命令-vi编辑器-磁盘分区及格式化-软链接及硬链接文件

    一.tar命令 1.将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@localhost  /] #  cat  /etc/passwd  /etc/group ...

  9. JZ2440学习笔记之链接文件lds

    如果在Linux环境下用arm-linux-gcc来编译arm程序,需要编写链接文件lds: 1. 运行地址=链接地址,表示代码在SDRAM中执行的地址,如果程序中有对某部分代码执行过搬运,需要在ld ...

随机推荐

  1. flex盒模型 详细解析

    flex盒模型 详细解析 移动端页面布局,采用盒模型布局,效果很好 /* ============================================================    ...

  2. SQL Server 禁用扩展存储过程

    概述 扩展存储过程是 SQL Server 实例可以动态加载和运行的 DLL.扩展存储过程是使用 SQL Server 扩展存储过程 API 编写的,可直接在 SQL Server 实例的地址空间中运 ...

  3. [Spark内核] 第34课:Stage划分和Task最佳位置算法源码彻底解密

    本課主題 Job Stage 划分算法解密 Task 最佳位置算法實現解密 引言 作业调度的划分算法以及 Task 的最佳位置的算法,因为 Stage 的划分是DAGScheduler 工作的核心,这 ...

  4. jquery tips简易使用方法 新手必看

    使用jquery1.12.4以上版本 使用jquery插件 tips .beg-pull-right 点击时的选择器 在这里写的是一个类选择器   记得引入jquery $(".beg-pu ...

  5. 编码(ACSII unicod UTF-8)、QT输出中文乱码深入分析

    总结: 1. qt输出中文乱码原因分析 qt的编程环境默认是utf-8编码格式(关于编码见下文知识要点一): cout << "中文" << endl; 程 ...

  6. Kafka的特点及使用场景

    Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...

  7. 读了前半本<Thinking in Java>

    读了1-14章.这本书真的不适合初学者,可能比较适合有一两年Java经验的人来读.学习真的是一个螺旋递进的过程.刚开始学Java基本语法,书上看到的很多东西觉得过于细枝末节,没见过,用不上,导致书看不 ...

  8. 全面总结: Golang 调用 C/C++,例子式教程

    作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...

  9. 从“思考”的角度来看如何成为一名优质的Java架构师

    导读: 架构师应不应该写代码 为什么别人的系统总是那么烂 成为架构师最困难的门槛是什么? 如何更高效的学习? 1.架构师应不应该写代码 合格的程序员对于明确分配的任务会完成的很好,但是大部分情况下&q ...

  10. 2017"百度之星"程序设计大赛 - 复赛1005&&HDU 6148 Valley Numer【数位dp】

    Valley Numer Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...