Linux 目录结构与使用场景全解析:从系统到业务部署,一篇彻底讲明白


接上文,很多刚接触 Linux 的同学都会遇到这些困惑:

  • “为什么我安装了 MySQL,目录里还是空的?”
  • “项目为什么有人放在 /data?这个目录哪里来的?”
  • “/usr、/etc、/var 这么多目录到底干什么?”
  • “部署项目应该放在哪里才是最佳实践?”

这篇文章将从 系统目录 + 运维习惯 + 业务部署 三个角度,彻底讲清楚 Linux 的目录结构,让你不再迷茫。


1.整体视角:Linux 是一棵倒挂的树

Linux 文件系统只有一个根目录 /,所有文件都挂在这棵树下:

/
├── bin
├── sbin
├── usr
├── etc
├── var
├── home
├── opt
├── data    ←(自定义目录)
├── root
├── tmp
├── dev
├── proc
├── sys
└── mnt / media

不同于 Windows 的 C/D/E 盘,
Linux 只有一个树状文件系统

理解这棵树 = 理解 Linux。


2.系统核心目录及使用场景(开发者最常用这一部分)

2.1 /home —— 普通用户的“家”

每个用户一个目录:

/home/lcb

使用场景:

  • 存放个人文件
  • Git 克隆项目
  • Python 虚拟环境
  • 脚本、测试/demo

适合:

✔ 学习代码
✔ 临时项目
✔ 个人开发环境


2.2 /root —— root 用户的家

只属于超级管理员 root。

使用场景:

  • 管理脚本
  • 高权限操作文件
  • 临时调试文件

⚠ 不建议用 root 干日常开发。


2.3 /etc —— 系统配置文件中心

所有服务的配置文件都在这里:

  • Nginx:/etc/nginx/
  • Redis:/etc/redis/redis.conf
  • MySQL:/etc/mysql/
  • SSH:/etc/ssh/sshd_config
  • APT 源:/etc/apt/sources.list

使用场景:

✔ 修改服务端口
✔ 配置数据库
✔ 修改登录方式
✔ 更改 Nginx、Redis 配置

一句话:所有“配置”都在这里,不放数据、不放代码。


2.4 /var —— 日志 & 动态数据

/var 是系统运行过程中“会变化的数据”。

常见子目录:

目录功能
/var/log/所有日志文件
/var/lib/数据库文件 / 程序状态数据
/var/cache/缓存文件
/var/spool/队列(邮件等)

使用场景:

✔ 查看 Nginx/MySQL/系统日志
✔ 备份数据库数据
✔ 清理缓存

例如:

  • MySQL 数据:/var/lib/mysql/
  • Redis 持久化:/var/lib/redis/
  • Nginx 日志:/var/log/nginx/

2.5 /usr —— 系统程序仓库(APT 安装的软件都在这里)

很多人以为软件会安装到当前目录,其实都是装到这里:

目录功能例子
/usr/bin/普通程序python3, node, npm
/usr/sbin/管理类程序nginx, mysqld, redis-server
/usr/lib/依赖库python 库、mysql 库

which 就能查:

which nginx
which python3
which redis-server

你会看到:

/usr/sbin/nginx
/usr/bin/python3
/usr/bin/redis-server

所以 安装软件后你当前目录空,是完全正常的


2.6 /usr/local —— 手工安装、编译安装的程序

特点:

  • 不归 APT 管
  • 用于源码编译、第三方软件
  • 和系统应用区分开

比如你从源码编译一个 nginx,它会安装到:

/usr/local/nginx/

2.7 /opt —— 第三方应用、独立工具

适合放:

  • 自己安装的大型应用
  • 独立的服务器程序
  • 你自己的本地部署软件

例如:

/opt/myapp/backend
/opt/myapp/frontend

在轻量运维中 /opt 很常见。


3.虚拟文件系统与设备相关目录

这些目录不是“真实的磁盘文件”,而是系统和内核提供的接口。

3.1 /proc —— 内核和进程信息

/proc/cpuinfo
/proc/meminfo
/proc/1234/

使用场景:

✔ 查看 CPU/内存
✔ 查看进程状态
✔ 性能调试


3.2 /sys —— 设备、内核参数接口

系统根据硬件自动生成,如:

/sys/class/net/

运维高阶使用。


3.3 /dev —— 设备文件

磁盘、U 盘、随机数设备都在这里:

/dev/sda
/dev/sdb1
/dev/tty
/dev/null

挂载磁盘时用到:

mount /dev/sdb1 /mnt

4.挂载目录:/mnt 与 /media

4.1 /mnt —— 临时挂载点

挂载硬盘、ISO 镜像时常用:

sudo mount /dev/sdb1 /mnt

4.2 /media —— 自动挂载点

U 盘、移动硬盘自动挂载到:

/media/usb

适合桌面系统。


5 /tmp —— 临时文件目录(重启可自动清理)

程序运行时的临时文件目录。

特点:

  • 所有人可写
  • 重启可能清空
  • 不要放持久数据

使用场景:

✔ 临时上传
✔ 程序缓存
✔ 命令行中间文件


6 重点:/data —— 业务数据 & 项目部署(非系统目录)

很多人都会问:

“为什么我看到别人服务器里有 /data/mysql /data/redis?”

因为 /data 不属于系统目录,是人为创建的!

企业习惯,把:

  • 项目
  • 数据文件
  • 日志文件
  • 上传文件
  • 大型服务

都放在 /data 下。


7. /data 为什么那么常见?

原因非常实际:

7.1 数据盘挂载在 /data(企业最常见)

例如:

/dev/vdb1  →  /data

这样:

  • 重装系统不会影响数据盘
  • 独立备份更方便
  • 数据量大时更安全

7.2 项目部署清晰、统一

/data/project1
/data/project2
/data/mysql
/data/redis
/data/logs

结构极其清晰。


7.3 和系统目录彻底分离

  • /usr:系统软件
  • /etc:系统配置
  • /var/lib:系统数据
  • /data:业务专用

避免污染系统盘。


7.4 权限、备份、扩容都更容易做

业务数据集中在 /data,维护简单:

  • 备份只备 /data
  • 扩容只扩 /data
  • 项目清理只动 /data
  • 迁移只迁 /data

8. 那 /data 到底是挂载出来的还是创建的?

两种情况都可能:

来源特点命令
手动 mkdir /data普通目录ls -ld /data
磁盘挂载到 /data数据盘df -h /data / lsblk

你现在的 RackNerd 服务器属于:

默认没有 /data,需要你自己 mkdir /data


9.开发者最应该如何用目录?(最佳实践)

以下是实际生产推荐结构:

/opt/myapp/                     ← 项目程序(代码)放这里
/data/mysql/                    ← 数据库文件
/data/redis/                    ← Redis 持久化文件
/data/logs/                     ← 应用日志
/etc/nginx/nginx.conf           ← 配置文件
/var/log/nginx/                 ← Nginx 系统日志

常见部署习惯:

内容存放位置
系统服务配置/etc/xxx/
程序日志(系统级)/var/log/xxx/
业务日志/data/logs/
数据库数据/data/mysql/
项目部署文件/opt/myapp//data/services/
临时文件/tmp/

10.总结:牢牢记住这 10 条

  1. /etc 放配置
  2. /var/log 放日志
  3. /var/lib 放系统数据
  4. /usr/bin 放系统程序
  5. /usr/local 放自己编译的程序
  6. /home 放个人项目
  7. /opt 放第三方应用
  8. /data 放业务数据(你自己创建的)
  9. /tmp 放临时文件
  10. /dev /proc /sys 都是虚拟目录(不要动)

理解这些目录后,你就能迅速定位:

  • 我的软件装在哪里?
  • 项目应该部署在哪?
  • 为什么 /data 下有别人写好的项目?
  • 为什么 apt 安装软件后 ls 是空的?
  • 如何划分系统盘和数据盘?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚务必早点睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值