【Linux】Linux文件管理01 文件和文件系统

文件

linux中一切皆文件,目录为目录文件。普通文件用来保存数据,目录文件用来保存文件

文件有两类数据

  • 元数据、metadata
    • 元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等。
  • 数据、data
    • 数据是指普通文件中的实际数据。

文件名

  1. 文件名严格区分字符大小写;file1, File1, FILE1是不同的文件
  2. 文件名可使用除/以外的任意字符,不建议使用特殊字符
    - /: 表示根目录,也用做路径分隔符
    
  3. 文件名长度最长不能超过255个字符
  4. 所以.开头的文件,均为隐藏文件

Linux下的文件类型

  • f 普通文件
  • d 目录文件
  • b 块设备
  • c 字符设备
  • l 符号链接文件
  • p 管道文件
  • s 套接字文件,socket


文件系统

文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容。在大多数情况下,它是一个传统BSD文件系统层次结构的形式化与扩充。

设计FHS的目的是为了给Unix-like系统的管理员提供一个管理系统以及目录结构的参考。

由于利用Linux源码开发产品和发行版的企业或组织众多,如果每个组织都按照自己的喜好来组织系统中的文件结构,网络上必然出现各种各样的文件结构。这些产品的用户就不得不为每种不同的文件系统结构花费时间来学习。有了FHS之后,几乎所有的Unix-like系统的发行商或软件开发者都遵从该建议规范每个特定目录下分别只放哪些文件,方便了文件的组织和查找。

详细内容参考:https://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf

根文件系统(rootfs)

root filesystem /
根目录是整个系统最重要的一个目录,因为在Linux系统中所有的目录都必须挂载在根目录下,也即所有的目录都是由根目录衍生出来。系统开机时所需要的开机软件、内核文件、函数库等都必须在根目录下。因此FHS也建议根目录不要安装在非常大、数据存取非常活跃的分区上,如此一来就能尽可能地降低系统不必要的错误。

FHS(Filesystem Hierarchy Standard)

目录 说明
/boot 引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader:grub)都存放于此目录
/bin 命令保存目录(普通用户就可以读取的命令);不能关联至独立分区,OS启动即会用到的程序
/sbin 命令保存目录(超级用户才能使用的目录);不能关联至独立分区,OS启动即会用到的程序
/lib 基本共享库文件,以及内核模块文件(/lib/modules),为系统启动或根文件系统上的应用程序(/bin, /sbin)提供共享库(libc.so. ld),以及为内核提供内核模块(modules)
/lib64 专用于x86_64系统上的辅助共享库文件存放位置
/etc 配置文件目录(纯文本文件,不能是二进制)
/home/USERNAME 普通用户家目录
/root 管理员的家目录
/media 便携式移动设备挂载点(cdrom、usb)
/mnt 临时文件系统挂载点
/dev 设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
/opt 第三方应用程序的安装位置
/srv 系统上运行的服务用到的数据
/tmp 临时文件存储位置
/usr unix software resource,根据FHS建议软件安装后将他们的数据合理地分别放置到这个目 录下,而不要自行新建该软件自己的独立目录。
/usr/bin 保证系统拥有完整功能而提供的应用程序;供普通用户使用的系统命令
/usr/sbin 供超级用户使用的系统命令
/usr/lib
/usr/lib64
/usr/include C程序的头文件(header files)
/usr/share 结构化独立的数据,例如命令手册页man和自带文档doc等
/usr/src 程序的源码
/usr/local 第三方应用程序的安装位置/var/(bin, sbin, lib, lib64, etc, share)
/var variable data files,可变数据文件,主要存储常变化的文件,包括缓存(cache)、登录 文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file, run file),或者例如MySQL数据库的文件等
/var/cache 应用程序产生的缓存文件
/var/lib 程序执行过程中,需要用到的数据文件放置的目录。此目录下各自的软件应该要有各自的目录
/var/local 专用于为/usr/local下的应用程序存储可变数据
/var/lock 锁文件,某些设备或者文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该 设备时,就可能产生一些错误,因此就得要将该设备或文件上锁(lock),以确保该文件或设备只给一个程序使用
/var/log 日志目录及文件,/var/log/messages, /var/log/wtmp
/var/mail 个人电子邮箱目录,通常与/var/spool/mail/目录互为链接
/var/opt 专用于为/opt下的应用程序存储可变数据
/var/run 运行中的进程相关的数据;通常用于存储进程的pid文件
/var/spool 应用程序数据池,存放等待其他程序使用的数据
/var/tmp 下次启动前会被删除的临时数据
/proc 用于输出内核与进程信息相关的虚拟文件系统,内核级进程存储其相关信息,多为内核参数,例 如net.ipv4.ipforward虚拟为net/ipv4/ipforward,存储于/proc/sys
/sys 用于输出当前系统上硬件设备相关信息的虚拟文件系统,sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;为管理内核提供了一种统一模型的接口
/selinux security enhanced Linux,selinux相关的安全策略等信息的存储位置

Linux上的应用程序的组成部分

1
2
3
4
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

说明

1
2
3
4
/usr/bin/
/usr/sbin/
/bin
/sbin

这四个目录都是用来保存系统命令。其中,bin目录下的命令任何用户都可以执行,sbin目录下只有root才可以执行。linux使用此方式来区分用户权限。

FHS根据文件的可共享、不可共享、静态和动态等特点,将目录树架构分为/、/usr、/var三部分。参考这里

  • / (root, 根目录):与开机系统有关
  • /usr (unix software resource):与软件安装/执行有关
  • /var (variable):与系统运作过程有关
    /usr放置的数据属于可分享的且不可变动的,/usr可分享给局域网内的其他主机来使用。

/proc/sys,这两个目录保存的是内存的挂载点,不能直接操作。其中的数据直接写在内存中。避免数据丢失或由于内存溢出导致系统崩溃


参考: