从文件管理的角度来看,文件分为数据文件和目录文件。由于目录文件是管理文件,所以从管理的角度来看,文件中目录的结构就会直接影响文件管理效果。目前,常见的目录结构有两种:一体化目录和分立式目录。

一体化目录

一体化目录与文件之间关系示意图如下:

也就是说,这种目录的特点就是把一个文件的所有信息都放在一个目录项中,所以叫做一体化目录。

分立式目录

由于一体化目录把用户没有必要知道的文件地址等物理信息都暴露给了用户,既不利于信息的隐蔽,也缺乏灵活性,违背了信息管理原则,因此在分立式目录中,目录被分成两部分:一部分只记录文件的文件名等用户关心的逻辑信息;另一部分则只记录文件所占用的存储块数目、位置等物理信息。前者叫做逻辑目录,简称目录;后者叫做文件索引节点,或i节点(inode)。由于i结点与文件唯一对应,所以i结点也叫做文件控制块(FCB)。

分立式目录及目录文件的结构如下所示:

用于集中记录i节点的文件叫做设备文件;而集中记录逻辑目录的文件叫做逻辑目录文件。

分立目录文件的最大特点是,多个逻辑文件目录项可以对应同一个i节点,从而同一个文件可以有多种访问路径和不同的名称。为了记录同一个文件究竟有多少个引用,在设备文件中有一个引用计数项。

现代文件系统大多数都采用这种灵活地分立式目录文件。

硬连接与符号连接

目录与文件之间的关联叫做连接,前面所述的连接方式都为硬连接。Linux及大多数UNIX的现代版本还有另一种连接,称为符号连接,或软连接。

符号连接是一种通过文件来查找另一个文件的方法,即文件路径的终端不是用户要访问的目标文件,而是一个存放目标文件路径及文件名的特殊文件(连接文件)。这样,当用户进程通过连接文件目录找到连接文件时,系统还需要再根据连接文件中提供的路径和文件名找到目标文件。 

符号连接之所以还叫软连接,是因为根据连接文件中的路径来查找目标文件的操作是由系统来完成的,目标文件与连接文件之间是互相独立的、互不影响的。所以当连接文件被删除时,目标文件不会受到任何影响;相应地,目标文件被删除时,连接文件也不会受到任何影响,只不过在通过符号连接到该文件时,为用户返回一个“该连接文件不存在”的提示。

符号连接的优点在于,可以用一个文件指向另一个磁盘上的文件或目录,甚至还可以指向另一台计算机上的一个文件或目录。

linux硬链接和软链接的区别

原理上:

硬链接:A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

软链接:A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

使用限制上:

硬链接:

  • 不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数);
  • 不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下;
  • 不能对不存在的文件创建硬链接,由原理即可知原因。

软链接:

  • 可以对目录创建软链接,遍历操作会忽略目录的软链接;
  • 可以跨文件系统;
  • 可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了。

命令:

  • 硬连接:ln 源文件 链接名
  • 软连接:ln -s 源文件 链接名

参考文章:linux 文件inode 详解。

目录树及根目录

目录树

既然目录的集合也是一种文件,也就是说,一个目录项既可以指向一个普通文件,也可以指向一个目录文件。于是,为了便于文件的管理,在文件数目巨大的文件系统中,可以采用多级目录结构。

下图所示就是一个具有三级目录的目录树,第一级目录叫做根目录,第二级目录为第一级目录的子目录,也是第三级目录的父目录:

根目录

由前面的介绍中可知,在访问一个文件时,首先须访问目录文件并通过目录来得到文件的i节点,进而得到文件。但由于目录本身存在于目录文件之中,而目录文件也需要通过目录来得到,于是,一个文件系统必须有一个不作为文件而存在的目录项,这个目录就叫做根目录。

也就是说,磁盘上的文件系统除了普通文件和目录文件之外,在磁盘的某个固定的位置还要有一个不需要通过文件就能获得的目录——根目录,以使系统可以通过它来得到其他目录文件或普通文件。

磁盘文件系统

保存在磁盘上的文件系统叫做磁盘文件系统,它是操作系统的文件管理系统的工作基础。

磁盘格式化

一块空磁盘必须经格式化处理之后才能使用。磁盘格式化分为物理格式化和逻辑格式化。

  • 所谓物理格式化,也叫低级格式化,就是在磁盘上简历标准记录格式,从而可以将其看成是若干存储块组成的线性空间;
  • 所谓逻辑格式化,也叫高级格式化,就是按照文件管理和存储要求,在磁盘上建立操作系统可以识别、具有逻辑意义的存储区,例如引导记录区、文件目录区、数据区等。

通常,硬盘在出厂前就已经进行过物理格式化,用户的工作就是对磁盘进行逻辑格式化。

磁盘上的文件系统

磁盘逻辑格式化之后,在磁盘上通常包括如下信息:如何启动所存储操作系统、磁盘的总块数、空闲块的数目及位置、目录结构以及各个具体数据文件。

通常磁盘的存储逻辑结构为一下几部分:

  • 引导控制块:它通常为磁盘的第一块,因系统启动后,BIOS要到引导块中寻找引导程序,以便引导操作系统,所以作为引导块必须包含引导操作系统所需要的信息。由于在系统引导时,系统还没有建立起文件系统的各个机制,还不能解释任何文件,所以引导块信息为一组有序块,作为二进制文件被BIOS读入内存并被处理器执行;
  • 主分区,也叫根分区。该分区一般为操作系统内核映像文件及其他系统文件的存储区;
  • 分区控制块:除了主分区之外的其他分区通常就是用来存储文件的数据分区。这些分区的第一块为分区控制块,该块中含有本分区所包含的块数、块的大小、空闲块的数量及位置、文件控制块(FCB)的数量以及位置等信息;
  • 目录文件:通常处于分区控制块之后,存放分区内文件的目录文件;
  • 文件控制块(FCB):它通常处在文件数据块之前,内含文件的逻辑及物理信息,如文件许可、拥有者、大小以及占用数据块的位置等信息。

【Linux】Linux文件目录相关推荐

  1. 【Android 逆向】Android 系统文件分析 ( /system/ 系统命令和系统应用数据目录 | /system/app/ 系统应用目录 | sys Linux 系统内核文件目录 )

    文章目录 一.system 系统命令和系统应用数据目录 1./system/app/ 系统应用目录 2./system/framework/ 框架目录 3./system/font/ 字体目录 二.s ...

  2. linux下设备或资源忙,linux删除文件目录 目录设备或资源忙怎么办

    linux删除文件目录 目录设备或资源忙怎么办 来源:未知 作者:老黑 时间:09-09-21 [打印] [root@rs swms]# rmdir zpgg rmdir: 'zpgg': 设备或资源 ...

  3. linux遍历文件目录

    借鉴的百度文库,特此梳理.用了多少库呢,你猜 linux遍历文件目录 作业要求 示例 延伸学习 功能分析 实现步骤 获取命令行参数 判断路径类型 实现针对目录.文件的不同处理方法 如果一个路径是目录 ...

  4. linux相对路径查看文件是否存在,2 linux笔记 文件目录管理

    2 linux笔记 文件目录管理 2.1 Linux 文件与目录管理 2.1.1 绝对路径: 路径的写法,由根目录 / 写起,例如: /usr/share/doc 这个目录. 2.1.2 相对路径: ...

  5. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  6. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例二.

    为了更好的排版, 所以将IK分词器的安装重启了一篇博文,  大家可以接上solr的安装一同查看. [Linux]Linux下安装和配置solr/tomcat/IK分词器 详细实例一: http://w ...

  7. krc 编辑 linux,Linux网络编程

    6 berkeley - 145 - struct in_addr { unsigned long s_addr; }; ina struct sockaddr_in struct in_addr i ...

  8. 简单了解linux,linux简单了解

    今天主要了解下linux linux目录结构包含: /:代表根目录 bin(binaries):存放二进制可执行文件 sbin(super user binaries):存放二进制可执行文件,只有ro ...

  9. linux puppy 安装软件,puppy linux(linux操作系统)V5.7.2 官方版

    puppy linux(linux操作系统)是一款十分优秀的全新linux发行系统.平常linux操作系统太过简陋,puppy linux集合了大量所需功能.但它自带了大量的描扫仪.打印机.数码相机的 ...

  10. 什么是Linux?Linux主要用在那?为什么有Linux?

    一,什么是Linux Linux,是一个开放式系统,任何人可以根据它的源码改编,做成你想要的样子(反正就是非常开放) 为什么要开发Linux 这个说来话长,就是一位Windows程序袁,因为不满足Wi ...

最新文章

  1. 管理系统中计算机应用知识总结,自考《管理系统中计算机应用》章节知识点复习:管理信息...
  2. ftp服务器压缩文件,ftp压缩服务器文件
  3. 【Python基础】13个知识点,系统整理Python时间处理模块Datetime
  4. 开发教程(四) MIP组件平台使用说明
  5. 【面试必备】奉上最通俗易懂的XGBoost、LightGBM、BERT、XLNet原理解析
  6. jaxl php,php往mysql写数据,中文乱码有关问题
  7. 面板大小调整_3天学会premiere完全自学教程-更改剪辑大小
  8. 前端遇到瓶颈怎么办?我来告诉你
  9. window Jconsole链接到CenOS 监控Tomcat
  10. ubuntu16.04 steam安装
  11. echar2 ,3 自定义右键菜单 右击事件
  12. Flink系列:物理分区分组broadcast、global、shuffle、forward、rebalance、rescale理解与实战
  13. AI 仿人类人工智能(超级智能)的本质
  14. 【高中数学教资】教案设计通用模板
  15. 微信开放标签wx-open-launch-app
  16. 苹果mac电脑怎么设置默认浏览器
  17. Q新闻丨Java 9正式版恐再延期;顺丰菜鸟口水战涉及阿里云;编程语言排行榜Python第四;盲人程序员背百万字符,用耳朵编程...
  18. 技术科普丨平台效果调试篇3-AWB Gain Adjust
  19. 官网下载 jdk1.7
  20. 电脑计算机网络都打不开怎么办,电脑打不开网页怎么办?如何解决电脑网页打不开问题...

热门文章

  1. python采用强制缩进的方式使得代码具有极佳的可读性_python3的优势有哪些
  2. 计算机网络协议——OSI、TCP数据、IP数据包、Ethernet 数据包
  3. 1067 – Invalid default value for ‘id’
  4. 超级好用的7个程序员笔记软件,你最常用的是哪个?
  5. 教材订购模块java代码实现_基于jsp的高校教材征订-JavaEE实现高校教材征订 - java项目源码...
  6. iomanip头文件
  7. input的样式设置
  8. 矩阵的基变换及对应基变换下向量的坐标变换
  9. STFT的综合分析--滤波器组求和(FBS)和叠相相加(OLA)
  10. html布局自然流加浮动,CSS浮动的使用和解决浮动的五种方法