linux目录结构和文件属性管理

hickwu 2020-06-16

一、FHS介绍
Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定义了系统中每个区域的用途、所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理。

FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等。第二层则是针对/usr及/var这两个目录的子目录来定义。例如/var/log放置系统登录文件、/usr/share放置共享数据等等。

二、linux目录结构介绍
整个Linux系统最重要的地方就是在于目录树架构,所谓的目录树架构就是以根目录为主, 然后向下呈现分支状的目录结构的一种档案架构。下图给出了linux的目录结构,那这些目录都有什么作用呢?

linux目录结构和文件属性管理

三、linux目录的作用
根目录(/)

最高一级目录,所有目录都是根目录衍生出来,只有root用户具有写权限,一般根目录下只存放目录,不要存放件

/bin目录 – 用户二进制文件

包含二进制的可执行文件,你需要的常见的Linux命令都位于此目录下。

/sbin目录 – 系统二进制文件

这个目录下的命令通常由系统管理员使用, 对系统进行维护。

/etc– 配置文件

包含所有程序所需要的配置文件,也包含用于启动/停止单个程序的起动和关闭shell脚本。

/dev-设备文件

包含设备文件,包括终端设备、USB或连接到系统的任何设备,如网卡等。

/proc-进程信息文件

这是一个虚拟的文件系统,包含有关正在运行的进程信息。

/usr-用户程序

包含二进制文件、库文件、文档和二级程序的源代码。

/usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。
/usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。
/usr/lib中包含了/usr/bin和/usr/sbin用到的库。
/usr/local中包含了从源安装的用户程序。

/home -HOME目录

包含所有用户的个人档案,Linux是多用户的系统,所以用该目录保存各用户的信息。

/boot -引导加载程序

包含引导加载程序相关的文件。

/lib -系统库

包含支持位于/lib和/sbin下的二进制文件的库文件。

/opt -可选的附加应用程序

给主机额外安装软件所摆放的目录,以前的 Linux 系统中,习惯放置在 /usr/local 目录下

/mnt /media -挂载目录

光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。

在这里我们所介绍的目录是在linux系统中常见的目录,不同厂商的linux有所差异,有的版本中会出现有额外作用的目录,这个就需要具体问题具体对待了。

四、目录和设备节点
我们已经知道目录是用来存放文件的,不同的目录存放的文件作用不同,那么我们来看下设备节点是什么?一个设备节点其实就是一个文件,Linux中称为设备文件。有一点必要说明的是,在Linux中,所有的设备访问都是通过文件的方式,一般的数据文件程序普通文件,设备节点称为设备文件,而这些设备节点,或者说是设备文件都统一存放在/dev目录下,简单来说,设备节点是一种特殊的文件,只不过这个文件存放的不是一般的数据,而是和你计算机中的设备想关联的。

五、.和..
在linux系统中,使用ls -a命令时,你会发现每一个目录下都包含两个目录,这两个目录就是.和..,其中"."表示是的是当前目录,也就是你使用pwd所查看到的路径,而".."表示的上一级目录,也就是父目录。

六、绝对路径和相对路径
linux的路径书写方式有两种,绝对路径:路径的写法一定是由根目录 / 写起的,以根目录为起点;相对路径:路径的写法不是由根目录 / 写起的,不以根目录为起点。例如,你知道你的朋友在四楼,而你在五楼,如果你的朋友询问你的位置,你就有两种回答方式,绝对路径的方式就是你告诉对方你在五楼,相对路径的方式就是你告诉对方你在对方楼上。至于优缺点方面没有绝对的答案,不同情况使用不同的路径罢了。看完这个我们来看下linux的文件是如何保存的。

七、linux的文件保存
假如有一个用户在linux系统中编辑了一个文件,编辑完内容后,关闭编辑器时会问用户改如何命名这个文件,设置完名称之后会选择一个目录将该文件保存到指定目录下,在这个例子中包含了linux系统中与文件相关的三个组成部分

数据:就是文件的内容,保存在一个叫data(数据块)的结构中

元数据:保存一个文件的特征的系统数据,用来保存除了文件内容和文件名以外的与文件相关的信息, 诸如文件的创建者,日期,大小等等,保存在一个叫inode(i节点)的结构中。

文件名:用来保存文件名称,文件名保存在一个叫dentry(目录项)的结构中。

在这里面我们提到了一个东西叫inode下面一起来看下inode

八、i节点介绍
通过前面的课程我们知道,inode是用来保存文件的元数据的,除此之外还保存文件相关属性信息,如链接数等。我们通过类似stat hello.txt这条命令查看指定文件的inode信息。

i节点我们就介绍到这里,接下来我们看一下链接

九、链接介绍
Linux中如果用户想把同一个文件保存在两个地方,或用两个不同的文件名保存,除了复制之外还有另外一种选择,就是链接,在linux系统中链接分为硬链接,软链接,空链接,递归链接等

硬链接:允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据,不过硬链接只能在同一文件系统中的文件之间进行连接

软链接 : 也叫符号链接,类似于windows系统中的快捷方式,与硬链接不同,软链接就是一个普通文件,软链接可对文件或目录创建。

这是概念上的描述,我们用一句话来将这两种链接进行总结,硬链接不能链目录,不能跨文件系统,软链接可以;源文件删除后软链接失效,硬链接依然可用,我们通过下面的例子可以看到硬链接和软链接的创建方式以及基本对比
linux目录结构和文件属性管理

除了上面我们说到的硬链接和软链接之外还有

空链接,所谓的空链接就是软链接指向的源文件不存在了,包括源文件被删除,改名。

递归链接:递归链接不如空链接常见,如果想看的话几乎需要专门寻找,如果用户创建两个软链接,linka与linkb关联,而linkb又与linka关联,这时候就会出现递归链接,比如
linux目录结构和文件属性管理

绝对软链接和相对软链接:主要指的是用户在创建软链接的时候使用的是绝对路径还是相对路径来指定链接目标,如果链接创建完成之后不会移动,那么这两种方法可以随意使用,但是如果链接文件需要被移动,那么建议还是使用绝对路径,比如
linux目录结构和文件属性管理

好了链接我们就说到这里,下面我们看一下时间戳

十、时间戳
时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。 当我们使用stat命令查看文件的时候除了创建时间你会发现有三个跟时间戳相关的信息
linux目录结构和文件属性管理
linux目录结构和文件属性管理

缩写 命令 目的
Atime 访问时间 文件数据每次被阅读后的更新
Ctime 改变时间 文件的i-节点信息每次被改变后都更新
Mtime 修改时间 文件数据每次被改变后的更新
十一、常用目录管理命令介绍

ls:
-a: 全部文件,包括隐藏文件一起列出
-d: 仅列出目录本身,而不是列出目录内的文件数据
-l:列出文件的属性与权限等

cp:
-i: 若文件存在,询问是否覆盖
-p:联通文件的属性一起复制,而非复制文件本身
-r:递归复制

rm:
-f: force,强制删除
-i:删除前询问是否删除
-r:递归删除

cat:
-n:打印行号

mkdir:
-p:递归

相关推荐