# 文件系统结构目录
## 文件系统的概念
- 计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其访问和查找变得容易。
- 文件系统使用文件和树形目录的抽象逻辑概念,用户使用文件系统来保存数据,不必关心数据实际保存在硬盘的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名即可。
## 文件系统的分类
- ext2:早期的linux中常用的文件系统。
- ext3:ext2的升级版,带日志功能。
- ext4:基于磁盘(存放根目录分区)。
- NFS:网络文件系统,由SUN发明,主要用于远程文件共享。
- NTFS:Windows NT/XP 操作系统采用的文件系统。
- XFS:由SGI开发的先进的日志文件系统,支持超大容量文件。
- ISO9660:大部分光盘所采用的的文件系统。
- SMBFS:Samba服务的共享文件系统。
- tmpfs:临时文件系统(内存文件系统)。
## 文件系统的目录结构
在linux系统中,所有内容都是以文件的形式保存和管理的,即**一切皆文件**。普通文件是文件,目录时文件,硬件设备(键盘、监视器、硬盘、打印机)是文件,套接字(socket)、网络通信等资源也是文件。
linx只有一个根目录,而且文件和目录呗组织成一个单根倒置树结构,此结构最上层是根目录,用`/`表示
根文件系统(rootfs):root filesystem 标准Linux文件系统(如:ext4)
**有几个特性:**
- 文件名称大小写敏感,例如:MAIL, Mail, mail, mAiL
- 以`.`开头的文件为隐藏文件
- 路径的分割用`/`表示
- 文件名最长255个字节
- 包括路径在内文件名称最长4095个字节
### `tree`命令查看目录结构
```
[root@lwz1 ~]# yum install tree -y # 下载tree命令
[root@lwz1 ~]# tree -L 1 / # 由于/目录下的结构太多了不方便展示,这里只显示一层目录结构做展示。
/
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
20 directories, 0 files
```
tree命令选项:
- `-a`:显示所有文件,包括隐藏文件
- `-d`:只显示目录
- `-f`:显示每个文件的绝对路径
- `-i`:不显示树枝,常与`-f`配合使用
- `-L`:level遍历目录的最大层数,level为大于0的正整数
### 目录作用说明
- `/bin`:`/bin -> /usr/bin`(软链接指向/usr/bin),bin是Binaries(二进制文件)的缩写,这个目录存放着一些常用命令。
- `/sbin`:`/sbin -> /usr/sbin`(软链接指向/usr/sbin),其中的s是super user,这里存放的是系统管理员root使用的命令。
- `boot`:这里存放的是启动linux系统时使用的一些核心文件,包括一些连接文件以及镜像文件。
- `/dev`:(Device)设备,存放linux的外部设备,用于与硬件设备进行交互。
- `/etc`:(Etcetera),配置文件。
- `/home`:用户的家目录。
- `/lib`、`/lib64`:(Library)库,共享库文件,包含供可执行文件使用的共享库。
- 执行`ldd /bin/ls`命令可查看ls命令依赖的库文件。
- `/media`:用于挂载可移动介质(如光盘、USB驱动器)的默认挂载点。
- `/mnt`:临时挂载点。
- `/opt`:可选软件包的安装目录。
- `/proc`:虚拟文件系统,提供有关系统内核和进程的信息。
- `/root`:root用户的主目录。
- `/run`:在系统引导过程中创建的运行时文件和数据。
- `/srv`:存放服务相关的数据目录。
- `/sys`:包含与内核相关的文件,用于与内核进行交互。
- `/tmp`:临时文件目录,用于存放临时文件。
- `/usr`:用户应用程序和文件的根目录,类似windows的`C:\Windows`
- `/usr/local`:类似于`C:\Program`
- `/usr/bin`:普通用户使用的应用程序。
- `/usr/sbin`:管理员使用的应用程序。
- `/var`:数据文件、日志文件、缓存文件等经常变动的文件存放目录。
- mysql:`/var/lib/mysql`
- vsftpd:`/var/ftp`
- mail:`/var/spool/mail`
- cron:`/var/spool/cron`
- log:`/var/log`
- 临时文件:`/var/tmp`(主要是程序产生的临时文件)
- `/lost+found`:当系统非法关机后,这里就存放了一些文件。
- `/etc/selinux`:Selinux是一个安全机制,比较复杂,类似于windows的防火墙,这个目录存放selinux相关的文件。
### 重要目录
- `/etc/resolv.conf`:linux系统DNS客户端配置文件,DNS(Domain Name System)在网站的运行中起到了至关重要的作用,其主要负责将网站域名解析为对应的IP地址。
- `/etc/hostname`:主机名配置文件,
`hostnamectl set-hostname 主机名`这个命令会直接修改配置文件,重启后生效
- `/etc/hosts`:设定用户IP与名字(或域名)的对应解析表,相当于本地(局域网内)的DNS解析文件
,类似于`C:\WINDOWS\system32\drivers\etc\hosts`文件
- `/etc/fstab`:配置开机设备自动挂载的文件
- `/etc/inittab`:系统启动时设定运行级别等配置的文件
- `/etc/profile`及`/etc/bashrc`:配置系统的环境变量/别名等的文件
- `/etc/profile.d`:用户登录后执行的脚本所在的目录
- `/etc/init.d`:软件启动程序所在的目录(centos7之前),centos7之后这个目录已经不用了。
- `/etc/motd`:配置用户登录系统之后显示提示内容的文件
- `/etc/redhat-release`:查看Red Hat版本号和名称信息的文件
- `/etc/sysctl.conf`:Linux内核参数设置文件
- `/var/log`:记录系统及软件运行信息文件所在的目录
- `/var/log/secure`:用户登录信息日志文件
- `/var/log/dmesg`:记录硬件信息加载情况的日志文件
- `/proc/cpuinfo`:当前cpu相关的信息
- `/proc/meminfo`:当前内存信息
- `/proc/loadavg`:当前平均负载相关的信息
- `/proc/mounts`:当前挂载相关的信息