🖥️ Ubuntu 22.04 Server 目录结构详解

IT 技术 84 阅读 更新于 2026-09-04 06:11

基于 Linux 文件系统层级标准 (FHS) 的完整目录说明

📋 快速概览 — 根目录下包含的主要目录

  • /bin — 基础命令 (essential binaries)
  • /boot — 启动引导文件
  • /dev — 设备文件
  • /etc — 系统配置文件
  • /home — 用户主目录
  • /lib — 核心共享库
  • /media — 可移动媒体挂载点
  • /mnt — 临时挂载点
  • /opt — 可选附加软件
  • /proc — 进程/内核虚拟文件系统
  • /root — root 用户主目录
  • /run — 运行时数据
  • /sbin — 系统管理命令
  • /srv — 服务数据
  • /sys — 设备/驱动虚拟文件系统
  • /tmp — 临时文件
  • /usr — 用户程序 (二级层次)
  • /var — 可变数据
  • /snap — Snap 软件包
  • /lost+found — 文件系统恢复

根目录结构 (/) 详细说明

Ubuntu 22.04 Server 根目录结构总览

/

├──

bin/

→ /usr/bin 的软链接

├──

boot/

→ 启动引导文件

├──

dev/

→ 设备文件

├──

etc/

→ 系统配置

├──

home/

→ 用户主目录

├──

lib/

→ /usr/lib 的软链接

├──

lib32/

→ 32位兼容库

├──

lib64/

→ /usr/lib64 的软链接

├──

libx32/

→ x32 ABI库

├──

media/

→ 可移动媒体挂载

├──

mnt/

→ 临时挂载点

├──

opt/

→ 第三方软件

├──

proc/

→ 进程信息(虚拟)

├──

root/

→ root主目录

├──

run/

→ 运行时数据

├──

sbin/

→ /usr/sbin 的软链接

├──

snap/

→ Snap包数据

├──

srv/

→ 服务数据

├──

sys/

→ 系统信息(虚拟)

├──

tmp/

→ 临时文件

├──

usr/

→ 用户程序

├──

var/

→ 可变数据

├──

lost+found/

→ 文件系统恢复

├──

cdrom/

→ CD-ROM挂载点

└──

swapfile

→ 交换文件(可选)

bin

/bin — 基础用户命令 Essential

→ /usr/bin (软链接)

在 Ubuntu 22.04 中,/bin 实际上是指向 /usr/bin 的软链接。这是 Ubuntu 自 2019 年起实施的 UsrMerge 策略的一部分,旨在统一根目录与 /usr 之间的冗余。

📌 包含的命令 (位于 /usr/bin)

核心命令详解

命令功能说明
ls列出目录内容
cp复制文件/目录
mv移动/重命名文件
rm删除文件/目录
cat查看文件内容
echo输出文本到终端
grep文本搜索
find文件搜索
tar归档打包工具
chmod修改文件权限
chown修改文件所有者
ln创建链接
ps查看进程状态
kill终止进程
bash/shShell 解释器
sed流文本编辑器
awk文本处理工具
gzip/gunzip文件压缩/解压

💡 提示:

UsrMerge 后,

/bin

/sbin

/lib

都已合并到

/usr

下,这是现代 Linux 发行版的趋势。

boot

/boot — 系统启动引导文件 Critical

包含系统启动所需的全部文件。GRUB 引导程序在系统加电后首先读取此目录,加载内核到内存中执行。

📌 核心文件

/boot 目录详细内容

文件/目录说明
vmlinuz-5.15.0-xx-generic压缩的 Linux 内核镜像文件,"vmlinuz" = virtual memory Linux + z(压缩)
initrd.img-5.15.0-xx-generic初始化内存盘 (Initial RAM Disk),内核加载前的临时根文件系统
config-5.15.0-xx-generic内核编译配置文件,记录内核模块选择
System.map-5.15.0-xx-generic内核符号表映射文件,用于调试
grub/GRUB 引导程序配置文件目录
efi/UEFI 启动文件 (EFI 系统分区挂载点)
memtest86+.bin内存测试工具

grub/ 子目录

  • grub.cfg — GRUB 主配置文件(由 update-grub 自动生成)
  • grubenv — GRUB 环境变量
  • fonts/ — 启动菜单字体文件
  • locale/ — 国际化语言文件
  • x86_64-efi/ — UEFI 平台的 GRUB 模块
  • i386-pc/ — Legacy BIOS 平台的 GRUB 模块

⚠️ 警告:

切勿手动修改

grub.cfg

,应编辑

/etc/default/grub

后运行

update-grub

重新生成。

dev

/dev — 设备文件 Virtual

Linux 哲学的核心理念 — "一切皆文件"。所有硬件设备都在此目录中以文件形式表示。/devudev 守护进程管理,是 tmpfs 内存文件系统。

📌 常见设备文件

块设备与字符设备

设备文件类型说明
/dev/sda块设备第一块 SATA/SCSI 硬盘
/dev/sda1块设备sda 上的第一个分区
/dev/nvme0n1块设备第一块 NVMe SSD
/dev/nvme0n1p1块设备NVMe 上的第一个分区
/dev/null字符设备黑洞设备,丢弃所有写入数据
/dev/zero字符设备持续输出零字节流
/dev/random字符设备阻塞式随机数生成器
/dev/urandom字符设备非阻塞式随机数生成器
/dev/tty字符设备当前终端设备
/dev/tty0字符设备当前虚拟控制台
/dev/stdin软链接→ /proc/self/fd/0
/dev/stdout软链接→ /proc/self/fd/1
/dev/stderr软链接→ /proc/self/fd/2
/dev/loop0块设备回环设备 (用于挂载镜像文件)

子目录结构

  • disk/ — 按 ID/UUID/路径组织的磁盘设备链接
  • mapper/ — LVM 逻辑卷和 dm-crypt 映射设备
  • net/ — 网络设备
  • pts/ — 伪终端从设备 (SSH 连接)
  • shm/ — 共享内存段
  • fd/ — 文件描述符
  • input/ — 输入设备
  • usb/ — USB 设备
  • serial/ — 串口设备

etc

/etc — 系统配置文件 Critical

"etc" 源自 "et cetera"(等等),现在专指系统级配置文件。所有系统服务、用户管理、网络配置、软件配置均存储在此。仅包含文本文件和脚本,不含可执行二进制文件。

📌 核心配置文件

系统基础配置

文件说明
hostname系统主机名
hosts本地 DNS 解析映射 (IP → 主机名)
passwd用户账户信息(用户名、UID、GID、Shell、主目录)
shadow用户密码哈希(仅 root 可读)
group用户组信息
fstab文件系统挂载表(开机自动挂载)
resolv.confDNS 解析配置(systemd-resolved 管理)
nsswitch.conf名称服务切换配置
environment全局环境变量
profile登录 Shell 全局初始化脚本
bash.bashrc非登录交互式 Shell 全局配置
sudoerssudo 权限配置
sysctl.conf内核运行时参数
crontab系统级定时任务
timezone时区配置 (→ /usr/share/zoneinfo/)
locale.conf系统语言/区域配置
lsb-release发行版信息
os-release操作系统标识信息
machine-id系统唯一标识符

网络配置 (/etc/netplan/)

Ubuntu 22.04 使用 Netplan 作为网络配置工具:

  • 00-installer-config.yaml — 初始安装生成的网络配置
  • 50-cloud-init.yaml — cloud-init 生成的配置(云服务器常见)

配置示例格式:

network: version: 2 renderer: networkd ethernets: eth0: dhcp4: true addresses: - 192.168.1.100/24 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]

重要子目录

  • /etc/apt/ — APT 包管理器配置
    • sources.list — 软件源列表
    • sources.list.d/ — 额外软件源
    • apt.conf.d/ — APT 选项配置
    • preferences.d/ — 软件包优先级
  • /etc/ssh/ — SSH 服务配置
    • sshd_config — SSH 服务端配置
    • ssh_config — SSH 客户端配置
    • ssh_host_*_key — 主机密钥
  • /etc/systemd/ — systemd 配置
    • system/ — 系统级服务单元
    • user/ — 用户级服务单元
    • journald.conf — 日志配置
    • logind.conf — 登录管理配置
    • resolved.conf — DNS 解析配置
  • /etc/nginx/ — Nginx 配置 (如已安装)
  • /etc/mysql/ — MySQL/MariaDB 配置
  • /etc/cron.d/ — 额外定时任务
  • /etc/cron.daily/ — 每日执行脚本
  • /etc/cron.weekly/ — 每周执行脚本
  • /etc/cron.monthly/ — 每月执行脚本
  • /etc/pam.d/ — 可插拔认证模块配置
  • /etc/ssl/ — SSL/TLS 证书
    • certs/ — CA 证书
    • private/ — 私钥 (仅 root 可读)
  • /etc/ufw/ — 防火墙配置
  • /etc/logrotate.d/ — 日志轮转配置
  • /etc/rsyslog.d/ — 系统日志配置
  • /etc/default/ — 服务默认启动选项
  • /etc/init.d/ — SysVinit 兼容脚本
  • /etc/security/ — 安全策略配置
  • /etc/skel/ — 新用户主目录模板
  • /etc/fail2ban/ — 防暴力破解配置
  • /etc/cloud/ — cloud-init 配置

home

/home — 普通用户主目录 Essential

每个普通用户都在此拥有独立的主目录。例如用户 ubuntu 的主目录为 /home/ubuntu。每个用户对自己的主目录拥有完全控制权。

📌 用户主目录结构 (以 /home/ubuntu 为例)

常见隐藏配置文件 (dotfiles)

文件说明
.bashrcBash 交互式非登录 Shell 配置(别名、函数等)
.bash_profileBash 登录 Shell 配置
.profileShell 通用登录配置
.bash_history命令历史记录
.bash_logout退出登录时执行的脚本
.cache/应用程序缓存数据
.config/用户级应用配置(XDG 标准)
.local/用户级本地数据
.ssh/SSH 用户配置
.vimrcVim 编辑器配置
.wget-hstswget HSTS 记录
.sudo_as_admin_successfulsudo 提示信息标记

.ssh/ 子目录

  • authorized_keys — 允许登录的公钥列表
  • id_rsa — RSA 私钥
  • id_rsa.pub — RSA 公钥
  • id_ed25519 — Ed25519 私钥 (推荐)
  • known_hosts — 已知主机公钥
  • config — SSH 客户端配置别名

⚠️ 安全提示:

.ssh

目录权限应为 700,密钥文件应为 600,

authorized_keys

应为 644。

常见子目录

  • ~/.cache/ — 缓存数据(浏览器、包管理器等)
  • ~/.config/ — 应用程序配置目录
  • ~/.local/bin/ — 用户级可执行文件
  • ~/.local/share/ — 用户级共享数据
  • ~/snap/ — Snap 应用的用户级数据

lib

/lib — 核心共享库 Essential

→ /usr/lib (软链接)

在 UsrMerge 架构中,/lib 指向 /usr/lib。包含 /bin/sbin 中程序运行所需的核心共享库和内核模块。

核心库文件

库文件说明
ld-linux-x86-64.so.2动态链接器/加载器
libc.so.6C 标准库(最核心)
libm.so.6数学函数库
libpthread.so.0POSIX 线程库
libdl.so.2动态链接库
librt.so.1实时扩展库
libnss_*.so名称服务切换模块
libpam*.soPAM 认证模块

modules/ — 内核模块

  • /lib/modules/$(uname -r)/ — 当前运行内核的模块目录
    • kernel/ — 内核模块(.ko 文件)
    • modules.dep — 模块依赖关系
    • modules.alias — 模块别名映射
    • modules.symbols — 模块符号表

med

/media — 可移动媒体挂载点 Optional

系统自动挂载可移动设备(USB 闪存盘、CD/DVD、SD 卡等)时创建的挂载点目录。每个设备会自动创建一个以设备卷标或 UUID 命名的子目录。

目录示例

  • /media/username/USB_DRIVE — 以用户名和设备标签名组织
  • /media/cdrom0 — CD-ROM 设备挂载点

💡 注意:

在服务器版中,通常不使用自动挂载。建议通过

/etc/fstab

手动配置挂载。

mnt

/mnt — 临时挂载点 Optional

管理员手动临时挂载文件系统时使用的目录。与 /media 不同,这里完全由管理员手动管理。

使用示例

  • 手动挂载 NFS: mount -t nfs 192.168.1.100:/share /mnt/nfs
  • 挂载 ISO 镜像: mount -o loop ubuntu.iso /mnt/iso
  • 挂载额外硬盘: mount /dev/sdb1 /mnt/data

💡 最佳实践:

生产环境建议在 /mnt 下创建语义化子目录如

/mnt/backup

/mnt/nfs_share

等。

opt

/opt — 可选第三方软件 Optional

用于存放独立于包管理器安装的大型第三方/商业软件。这些软件通常自包含,拥有完整的目录结构(bin/、lib/、share/ 等)。

常见安装示例

  • /opt/google/ — Google 软件 (Chrome、Google Cloud SDK)
  • /opt/microsoft/ — Microsoft 软件 (PowerShell、Teams)
  • /opt/lampp/ — XAMPP 集成环境
  • /opt/sonarqube/ — SonarQube 代码质量平台
  • /opt/tomcat/ — Apache Tomcat
  • /opt/elasticsearch/ — Elasticsearch
  • /opt/gitlab/ — GitLab Omnibus

💡 约定:

/opt 下的软件通常通过符号链接将可执行文件放到

/usr/local/bin

或添加到

$PATH

中。

prc

/proc — 进程信息虚拟文件系统 Virtual

procfs — 一个完全驻留在内存中的虚拟文件系统。它提供了系统运行时的进程和内核信息的接口,不占用磁盘空间。每个运行中的进程都有一个以 PID 命名的目录。

📌 重要文件

系统级信息文件

文件说明
/proc/cpuinfoCPU 详细信息(型号、频率、核心数、缓存)
/proc/meminfo内存使用情况详情
/proc/loadavg系统负载平均值(1/5/15分钟)
/proc/uptime系统运行时间(秒)
/proc/version内核版本信息
/proc/filesystems内核支持的文件系统类型
/proc/mounts当前已挂载的文件系统
/proc/diskstats磁盘 I/O 统计
/proc/net/dev网络接口流量统计
/proc/swaps交换空间使用情况
/proc/partitions分区信息
/proc/interrupts中断信息
/proc/ioportsI/O 端口使用
/proc/dmaDMA 通道信息
/proc/cmdline内核启动参数
/proc/sys/内核可调参数(sysctl 接口)

进程目录 (/proc/[PID]/)

  • /proc/1/ — systemd 进程(PID=1)
  • /proc/[PID]/cmdline — 进程完整命令行参数
  • /proc/[PID]/environ — 进程环境变量
  • /proc/[PID]/fd/ — 进程打开的文件描述符
  • /proc/[PID]/cwd — 当前工作目录 (符号链接)
  • /proc/[PID]/exe — 可执行文件路径 (符号链接)
  • /proc/[PID]/status — 进程状态摘要
  • /proc/[PID]/maps — 内存映射
  • /proc/[PID]/stack — 内核调用栈
  • /proc/[PID]/io — I/O 统计
  • /proc/[PID]/cgroup — 所属 cgroup 信息
  • /proc/[PID]/limits — 资源限制
  • /proc/self/ — 指向当前进程的特殊链接

⚠️ 注意:

修改

/proc/sys/

下的值可直接改变内核行为,但重启后失效。持久化修改应使用

/etc/sysctl.conf

rt

/root — root 用户主目录 Critical

超级用户 (root) 的主目录。位于根目录下而非 /home/root,是因为即使 /home 分区无法挂载,root 也能登录系统进行维护修复。

目录内容

  • .bashrc — root 的 Bash 配置
  • .profile — root 登录环境配置
  • .ssh/ — root 的 SSH 配置
  • .cache/ — root 用户的缓存数据
  • .local/ — root 用户本地数据
  • .viminfo — Vim 历史记录

⚠️ 安全建议:

日常运维应使用普通用户 + sudo,避免直接使用 root 登录,

/root

目录权限应为 700。

run

/run — 运行时数据 Virtual

存储自系统上次启动以来的运行时变量数据。基于 tmpfs(内存文件系统),重启后内容清空。替代了旧的 /var/run/var/lock

内容说明

  • /run/systemd/ — systemd 运行时状态数据
  • /run/utmp — 当前登录用户信息
  • /run/sshd/ — SSH 服务运行时数据
  • /run/lock/ — 锁文件(防止服务冲突)→ /var/lock 的链接
  • /run/user/[UID]/ — 每个用户独立的运行时目录
  • /run/log/ — 早期启动日志
  • /run/mount/ — 挂载相关运行时数据
  • /run/network/ — 网络服务运行时状态
  • /run/dbus/ — D-Bus 系统总线

💡 说明:

/var/run

/var/lock

现在都是指向

/run

的符号链接,实现向后兼容。

sbin

/sbin — 系统管理命令 Essential

→ /usr/sbin (软链接)

UsrMerge 后指向 /usr/sbin,包含系统管理员专用的命令,通常涉及系统管理、网络配置、文件系统操作等,需要 root 权限执行。

核心管理命令

命令功能说明
fdisk磁盘分区表管理
mkfs.ext4创建 ext4 文件系统
fsck文件系统检查修复
mount/umount挂载/卸载文件系统
ifconfig/ip网络接口配置
iptables/nftables防火墙规则管理
reboot/shutdown/poweroff系统电源管理
systemctlsystemd 服务管理
modprobe加载/卸载内核模块
lsmod列出已加载内核模块
useradd/userdel用户管理
passwd修改用户密码
ldconfig更新动态链接库缓存
sysctl运行时内核参数配置
lvm/lvcreate/lvremoveLVM 逻辑卷管理

snap

/snap — Snap 软件包数据 Optional

Ubuntu 特有的目录,用于存放 Snap 软件包。Snap 是 Canonical 开发的通用软件打包格式,自带依赖,独立于系统库。

子目录结构

  • /snap/[package]/[revision]/ — 每个 Snap 包的解压内容
  • /snap/bin/ — Snap 应用可执行文件(已加入 PATH)
  • /snap/core22/ — 核心运行时环境
  • /snap/lxd/ — LXD 容器管理
  • /snap/snapd/ — Snap 守护进程

💡 管理命令:

snap list

查看已安装 Snap 包,

snap info [name]

查看详情。

srv

/srv — 系统服务数据 Optional

"service" 的缩写。存储由系统提供的服务相关数据。FHS 标准推荐将服务数据存放于此,而非 /usr 或其他系统目录。

常见用途

  • /srv/www/ — Web 服务器站点数据 (替代 /var/www)
  • /srv/ftp/ — FTP 服务器共享文件
  • /srv/nfs/ — NFS 共享目录
  • /srv/samba/ — Samba 共享目录
  • /srv/git/ — Git 仓库数据
  • /srv/rsync/ — Rsync 同步数据

💡 实践建议:

很多实际项目中 Web 根目录常用

/var/www/html

,使用

/srv

更多是一种规范化的最佳实践。

sys

/sys — 系统/设备虚拟文件系统 Virtual

sysfs — 内核设备模型的结构化导出。与 /proc 类似,但更加结构化,专门提供设备、驱动、内核子系统的信息。

核心子目录

  • /sys/block/ — 块设备信息
  • /sys/bus/ — 总线类型(PCI、USB 等)
  • /sys/class/ — 按设备类别组织(net、block、input 等)
    • /sys/class/net/ — 网络接口信息
    • /sys/class/block/ — 块设备链接
    • /sys/class/thermal/ — 温度传感器
  • /sys/devices/ — 设备树形结构(物理设备)
  • /sys/module/ — 已加载内核模块信息
  • /sys/firmware/ — 固件信息(ACPI、EFI)
  • /sys/fs/ — 文件系统特定信息
    • /sys/fs/cgroup/ — cgroup 层级结构
  • /sys/kernel/ — 内核通用信息
    • /sys/kernel/mm/ — 内存管理
    • /sys/kernel/debug/ — debugfs
  • /sys/power/ — 电源管理接口
  • /sys/hypervisor/ — 虚拟化信息

tmp

/tmp — 临时文件 Essential

所有用户和程序都可以在此创建临时文件。默认挂载为 tmpfs(内存文件系统),系统重启后内容清除。Ubuntu 使用 systemd-tmpfiles 定期清理旧文件。

安全与管理

  • 权限: drwxrwxrwt (1777) — sticky bit 确保用户只能删除自己的文件
  • systemd-tmpfiles --clean 负责定期清理
  • 配置: /etc/tmpfiles.d/tmp.conf 定义清理规则
  • 对于需要更大空间或持久化的临时文件,使用 /var/tmp

⚠️ 注意:

不要在 /tmp 中存放重要数据!内容可能在重启、清理或 tmpfs 空间不足时被删除。

usr

/usr — 用户程序(二级层次) Essential

"User System Resources" — 这是系统最大的目录之一。存储非关键性(启动不需要)的用户程序、库、文档等。在 UsrMerge 中,根目录的 /bin/sbin/lib 都指向这里。

📌 子目录详解

/usr/bin — 用户命令

  • 普通用户可执行的命令(非系统管理专用)
  • python3gccgitwgetcurl
  • /usr/bin/env — 环境变量解释器(脚本常用)
  • 通常有数千个可执行文件

/usr/sbin — 系统管理命令

  • 系统管理员专用命令
  • useraddfdisksshdnginx

/usr/lib — 共享库

  • /usr/lib/x86_64-linux-gnu/ — 64位架构特定库
  • /usr/lib/python3/ — Python 标准库
  • /usr/lib/gcc/ — GCC 编译器支持库
  • /usr/lib/systemd/ — systemd 组件
  • /usr/lib/apt/ — APT 包管理器库
  • /usr/lib/dpkg/ — dpkg 底层包管理

/usr/share — 架构无关数据

  • /usr/share/doc/ — 软件包文档
  • /usr/share/man/ — 手册页 (man pages)
  • /usr/share/info/ — GNU Info 文档
  • /usr/share/locale/ — 国际化翻译文件
  • /usr/share/zoneinfo/ — 时区数据
  • /usr/share/applications/ — 桌面应用文件
  • /usr/share/fonts/ — 系统字体
  • /usr/share/icons/ — 图标主题
  • /usr/share/bash-completion/ — Bash 自动补全

/usr/local — 本地安装软件

管理员手动编译安装的软件默认目录,不受包管理器管理:

  • /usr/local/bin/ — 本地可执行文件
  • /usr/local/sbin/ — 本地管理命令
  • /usr/local/lib/ — 本地库文件
  • /usr/local/etc/ — 本地配置文件
  • /usr/local/share/ — 本地共享数据
  • /usr/local/src/ — 本地源代码
  • /usr/local/include/ — 本地头文件

💡 用途:

通过

make install

编译安装的软件默认会放到此目录,优先级高于 /usr。

/usr/include — 头文件

  • C/C++ 头文件 (.h)
  • /usr/include/linux/ — Linux 内核头文件
  • /usr/include/python3.10/ — Python 开发头文件
  • 编译 C/C++ 程序时需要的开发库

/usr/src — 内核源代码

  • /usr/src/linux-headers-$(uname -r)/ — 当前内核头文件
  • DKMS 编译内核模块时需要的头文件
  • /usr/src/linux-source-5.15.0/ — 完整内核源码(如已安装)

var

/var — 可变数据 Essential

"variable" — 存储运行过程中持续变化的数据。日志、缓存、邮件队列、数据库文件等都存放在此。这是服务器版中最重要的可写目录。

📌 关键子目录

/var/log — 系统日志

日志文件说明
syslog系统全局日志
auth.log认证日志 (SSH 登录、sudo 等)
kern.log内核日志
daemon.log守护进程日志
apt/APT 包管理日志
unattended-upgrades/自动更新日志
fail2ban.logFail2ban 日志
ufw.logUFW 防火墙日志
nginx/Nginx 访问/错误日志
mysql/MySQL 日志
boot.log启动过程日志
cloud-init.log云初始化日志

💡 日志管理:

journalctl

可查看 systemd 管理的日志,

logrotate

自动轮转旧日志。

/var/lib — 状态信息

  • /var/lib/dpkg/ — dpkg 包数据库
  • /var/lib/apt/ — APT 缓存和状态
  • /var/lib/mysql/ — MySQL/MariaDB 数据文件
  • /var/lib/postgresql/ — PostgreSQL 数据
  • /var/lib/docker/ — Docker 容器数据
  • /var/lib/lxd/ — LXD 容器数据
  • /var/lib/snapd/ — Snap 状态数据
  • /var/lib/systemd/ — systemd 持久化数据
  • /var/lib/cloud/ — cloud-init 数据
  • /var/lib/ufw/ — 防火墙状态
  • /var/lib/dhcp/ — DHCP 租约

/var/cache — 缓存数据

  • /var/cache/apt/archives/ — 下载的 .deb 包缓存
  • /var/cache/apt/archives/partial/ — 未完成的下载
  • /var/cache/fontconfig/ — 字体缓存
  • /var/cache/nginx/ — Nginx 缓存
  • /var/cache/man/ — man 手册缓存
  • /var/cache/private/ — 私有缓存

💡 清理缓存:

sudo apt clean

可清除 APT 包缓存释放磁盘空间。

/var/www — Web 服务器根目录

  • /var/www/html/ — Apache/Nginx 默认站点根目录
  • /var/www/html/index.html — 默认首页

/var/spool — 队列数据

  • /var/spool/cron/crontabs/ — 用户级 cron 任务
  • /var/spool/mail/ — 邮件队列
  • /var/spool/postfix/ — Postfix 邮件队列
  • /var/spool/cups/ — 打印队列
  • /var/spool/rsyslog/ — 日志缓冲队列

其他子目录

  • /var/run/run (符号链接)
  • /var/lock/run/lock (符号链接)
  • /var/tmp/ — 持久化临时文件(重启不清理)
  • /var/mail/ — 用户邮件箱
  • /var/backups/ — 系统备份(passwd、shadow 等)
  • /var/opt/ — /opt 软件的可变数据
  • /var/crash/ — 系统崩溃转储
  • /var/snap/ — Snap 应用可变数据

l+f

/lost+found — 文件系统恢复目录 Optional

每个 ext2/ext3/ext4 文件系统分区都有一个 lost+found 目录。当运行 fsck(文件系统检查)时,发现的孤立文件片段(损坏/未正确关闭的文件)会被放到这里,以 inode 编号命名。

使用说明

  • 每个挂载分区根目录下都有一个独立的 lost+found
  • 权限为 700(仅 root 可访问)
  • 文件以 inode 编号命名,如 #12345
  • 通常为空,有内容说明系统经历过异常关机
  • 预分配空间以加速 fsck 恢复操作

⚠️ 不要删除:

即使为空,也不应删除此目录。fsck 运行时需要它存在且有足够的空间。

cd

/cdrom — CD-ROM 挂载点 Optional

Ubuntu 安装时创建的 CD/DVD 驱动器默认挂载点。在服务器版中通常很少使用(服务器一般没有光驱)。

如需手动挂载光盘:

sudo mount /dev/sr0 /cdrom # 或 sudo mount /dev/cdrom /cdrom

swp

/swapfile — 交换文件 Optional

Ubuntu 22.04 默认使用交换文件而非交换分区。这是一个普通文件,被内核用作虚拟内存的扩展。

管理命令

  • 查看状态: swapon --showfree -h
  • 创建新交换文件: sudo fallocate -l 4G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile
  • 持久化写入 /etc/fstab: /swapfile none swap sw 0 0
  • 调整大小需要先关闭 (swapoff)、删除、重新创建

💡 建议大小:

物理内存的 1-2 倍。对于大内存服务器(>16GB),4-8GB 通常足够。

FHS 目录层级总览

📊

目录权限与类型速查表

目录类型典型权限重启后
/bin软链接lrwxrwxrwx持久
/boot静态755持久
/devdevtmpfs755动态重建
/etc静态配置755持久
/home用户数据755持久
/lib软链接lrwxrwxrwx持久
/opt静态软件755持久
/procprocfs(虚拟)555每次重启重建
/root用户数据700持久
/runtmpfs755清空
/sbin软链接lrwxrwxrwx持久
/snapSnap数据755持久
/srv服务数据755持久
/syssysfs(虚拟)555每次重启重建
/tmptmpfs1777清空
/usr静态755持久
/var可变755持久(部分)

🔑

关键概念总结

UsrMerge (根目录合并)

Ubuntu 22.04 默认启用 UsrMerge,将 /bin/sbin/lib 合并到 /usr 下,简化系统结构,减少冗余。

虚拟文件系统

/proc/sys/dev/run 都不是真实磁盘存储,而是内核在内存中动态生成的接口,提供系统运行时信息。

FHS 标准 (Filesystem Hierarchy Standard)

Linux 发行版遵循的统一标准,定义了各目录的用途,确保不同发行版之间的一致性。最新版本为 FHS 3.0。

服务器版 vs 桌面版差异

  • 服务器版无 /media 自动挂载(通常无桌面环境)
  • 服务器版默认启用 UFW 防火墙和 fail2ban
  • 服务器版使用 cloud-init 初始化
  • 服务器版默认不安装 GUI 相关目录
  • 服务器版更注重 /var/log/var/lib 的容量规划

45.64.74.193

← 返回IT 技术 yicool 百科 · 🖥️ Ubuntu 22.04 Server 目录结构详解

评论 0