文件系统与目录结构

Linux 目录结构概览

Linux 采用单根目录树结构,所有文件和目录都从根目录 / 开始组织。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/ (根目录)

├── /bin # 基本用户命令(二进制文件)
├── /boot # 启动加载器文件
├── /dev # 设备文件
├── /etc # 系统配置文件
├── /home # 用户主目录
│ ├── /home/alice
│ ├── /home/bob
│ └── ...
├── /lib # 共享库文件
├── /media # 可移动媒体挂载点
├── /mnt # 临时挂载点
├── /opt # 可选应用软件
├── /proc # 进程信息虚拟文件系统
├── /root # root 用户主目录
├── /run # 运行时变量数据
├── /sbin # 系统管理命令
├── /srv # 服务数据
├── /sys # 系统信息虚拟文件系统
├── /tmp # 临时文件
├── /usr # 用户程序和数据
│ ├── /usr/bin # 用户命令
│ ├── /usr/lib # 库文件
│ ├── /usr/local # 本地安装软件
│ └── /usr/share # 共享数据
└── /var # 可变数据文件
├── /var/log # 日志文件
├── /var/spool # 任务队列
└── /var/tmp # 持久临时文件

重要目录详解

/bin 和 /sbin

/bin - Essential user binaries

  • 单用户模式下也需要的命令
  • 例如:ls, cp, mv, cat, mkdir

/sbin - System binaries

  • 系统管理命令
  • 例如:fdisk, fsck, reboot, iptables

/etc

系统配置文件

重要配置文件:

  • /etc/passwd - 用户账户信息
  • /etc/shadow - 用户密码(加密)
  • /etc/group - 群组信息
  • /etc/hosts - 主机名解析
  • /etc/fstab - 文件系统表
  • /etc/resolv.conf - DNS 配置
  • /etc/crontab - 定时任务
  • /etc/ssh/sshd_config - SSH 配置

/home 和 /root

/home - 普通用户主目录

1
2
3
4
/home/
├── alice/ ← 用户 alice 的家
├── bob/ ← 用户 bob 的家
└── charlie/ ← 用户 charlie 的家

/root - root 用户主目录

  • root 是超级管理员
  • 与普通用户分离,提高安全性

/var

可变数据文件

  • /var/log - 系统日志

    • /var/log/syslog/var/log/messages
    • /var/log/auth.log/var/log/secure
    • /var/log/kern.log
  • /var/spool - 任务队列

    • /var/spool/cron - 定时任务
    • /var/spool/mail - 用户邮件
  • /var/cache - 应用缓存

  • /var/lib - 应用状态数据

    • /var/lib/mysql - MySQL 数据
    • /var/lib/dpkg - 包管理状态

文件系统类型

常见 Linux 文件系统

文件系统 特点 适用场景
EXT4 稳定、成熟、 journaling 通用,推荐大多数场景
XFS 高性能大文件、并行IO 大数据、媒体存储
Btrfs 快照、压缩、校验和 高级功能需求
ZFS 企业级特性、数据完整性 企业存储、NAS
F2FS 针对闪存优化 SSD、嵌入式设备

文件系统层次标准 (FHS)

Filesystem Hierarchy Standard (FHS)

FHS 定义了类 Unix 系统中目录结构和目录内容的标准,确保软件能在不同的 Linux 发行版间兼容。

查看当前系统 FHS 合规性:

1
2
3
4
5
6
7
8
# 检查关键目录是否存在
ls -la / | grep -E "bin|boot|dev|etc|home|lib|media|mnt|opt|proc|root|run|sbin|srv|sys|tmp|usr|var"

# 查看文件系统挂载情况
df -hT

# 查看当前挂载的文件系统
cat /proc/mounts

实用命令速查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# 显示当前目录
pwd

# 切换目录
cd /path/to/dir # 绝对路径
cd ../parent # 相对路径
cd ~ # 回到用户主目录
cd - # 回到上次目录

# 列出目录内容
ls # 基本列表
ls -la # 显示所有文件(包括隐藏)
ls -lh # 人类可读格式
ls -lt # 按时间排序
ls -ltr # 按时间倒序

# 创建目录
mkdir dirname # 创建单个目录
mkdir -p path/to/nested/dir # 创建嵌套目录

# 删除目录
rmdir dirname # 删除空目录
rm -r dirname # 递归删除目录
rm -rf dirname # 强制递归删除(谨慎使用!)

# 复制目录
cp -r source dest # 递归复制

# 移动/重命名目录
mv oldname newname # 重命名
mv source /path/to/dest # 移动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 创建文件
touch filename # 创建空文件
> filename # 创建空文件(重定向)

# 查看文件内容
cat filename # 显示全部内容
cat -n filename # 显示行号
less filename # 分页查看(支持上下滚动)
more filename # 分页查看(只能向下)
head filename # 显示前10行
head -n 20 filename # 显示前20行
tail filename # 显示后10行
tail -n 20 filename # 显示后20行
tail -f filename # 实时追踪文件更新(常用于日志)

# 编辑文件
nano filename # 简单编辑器
vim filename # 强大编辑器
vi filename # 兼容模式

# 搜索文件内容
grep "pattern" filename # 基本搜索
grep -i "pattern" filename # 忽略大小写
grep -n "pattern" filename # 显示行号
grep -r "pattern" /path/ # 递归搜索目录
grep -v "pattern" filename # 反向匹配(排除)

# 文件比较
diff file1 file2 # 比较两个文件差异
cmp file1 file2 # 逐字节比较

# 文件统计
wc filename # 统计行数、单词数、字节数
wc -l filename # 只统计行数
wc -w filename # 只统计单词数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看磁盘空间
df -h # 人类可读格式
df -hT # 显示文件系统类型
df -i # 查看 inode 使用情况

# 查看目录/文件大小
du -sh /path # 查看目录总大小
du -h --max-depth=1 /path # 查看子目录大小
du -ah /path | sort -rh | head -20 # 找出最大的20个文件

# 文件系统检查(需要卸载或使用 live CD)
fsck /dev/sda1 # 检查并修复文件系统
e2fsck /dev/sda1 # ext 文件系统专用

# 挂载与卸载
mount /dev/sdb1 /mnt/usb # 挂载设备
mount -o loop iso.iso /mnt/iso # 挂载 ISO 文件
umount /mnt/usb # 卸载
mount | grep /dev/sda # 查看挂载状态

# 创建文件系统
mkfs.ext4 /dev/sdb1 # 创建 ext4 文件系统
mkfs.xfs /dev/sdb1 # 创建 xfs 文件系统
mkswap /dev/sdb2 # 创建 swap 分区

# LVM 基本操作
pvcreate /dev/sdb # 创建物理卷
vgcreate vg0 /dev/sdb # 创建卷组
lvcreate -L 10G -n lv0 vg0 # 创建逻辑卷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# find 命令(功能最强大)
find /path -name "*.txt" # 按名称查找
find /path -iname "*.txt" # 忽略大小写
find /path -type f -name "*.log" # 只找文件
find /path -type d -name "backup" # 只找目录
find /path -size +100M # 大于100MB的文件
find /path -size -1k # 小于1KB的文件
find /path -mtime -7 # 7天内修改过的文件
find /path -user username # 属于某用户的文件
find /path -perm 644 # 特定权限的文件
find /path -name "*.tmp" -delete # 查找并删除
find /path -name "*.log" -exec gzip {} \; # 查找并压缩
find /path -name "*.txt" | xargs grep "pattern" # 结合 xargs 使用

# locate 命令(基于数据库,速度更快)
updatedb # 更新 locate 数据库
locate filename # 快速查找文件
locate -i filename # 忽略大小写
locate "*.conf" # 支持通配符
locate -n 10 "*.log" # 限制结果数量

# which 和 whereis
which command # 查找命令的可执行文件位置
which -a command # 显示所有匹配的路径
whereis command # 查找命令的二进制、源码和 man 手册
whereis -b command # 只找二进制文件

# type 命令
type command # 显示命令类型(别名、内置命令、外部命令)
type -a command # 显示所有匹配项

延伸阅读

理解目录结构是掌握 Linux 的第一步


© 2025 Rl. 使用 Stellar 创建
站点访问量 Loading... 站点访客数 Loading... 页面访问量 Loading...