「FHS」- 文件系统层次标准,Filesystem Hierarchy Standard

/ (a.k.a ROOT)

Linux提供的系统文件

/boot

存放引导系统的文件,内核存在于该目录总中。通常命名为/boot/vmlinuz或类似的目录。

/proc

当前运行的进程,供高级用户使用

ioports,计算机的输入输出硬件列表
cpuinfo,计算机处理器方面的信息
version,操作系统版本,除此之外uname命令也能输出这些信息
uptime,系统正常运行时间,可以使用uptime命令来获取更加人性化的输出。
xxx,进程ID为xxx的进程的信息。
self,正在运行的当前进程的信息。

/sys

sysfs – Wikipedia

sysfs,是由Linux Kernel提供的伪文件系统,它通过虚拟文件将关于各种内核子系统硬件设备相关设备驱动程序的信息从内核的设备模型导出到用户空间。除了提供有关各种设备和内核子系统的信息之外,导出的虚拟文件也用于其配置。

sysfs,提供的功能类似于BSD操作系统中的sysctl机制,不同之处在于sysfs被实现为虚拟文件系统,而不是特制的内核机制,而在Linux中,sysctl配置参数是在作为procfs一部分的/proc/sys/中,而不是挂载在/sys/的sysfs。

sysfs挂载在/sys下。如果在初始化期间未挂载,则可以使用以下命令挂载:mount -t sysfs sysfs /sys

udevHAL等程序,通过sysfs访问有关硬件及其驱动程序(内核模块)的信息。脚本已被写入先前通过procfs获取的访问信息,一些脚本通过其属性来配置设备驱动设备

https://en.wikipedia.org/wiki/Sysfs
https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt
https://lkml.org/lkml/2002/10/19/8
https://lkml.org/lkml/2002/11/4/213
https://lkml.org/lkml/2001/10/17/147
https://lkml.org/lkml/2001/11/1/38
https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf
https://www.kernel.org/doc/Documentation/filesystems/sysfs.txt
https://wiki.debian.org/ramfs
https://lwn.net/Articles/54651/
https://lwn.net/Articles/31185/

/usr

Linux提供的更多系统文件

/usr/local

FHS 2.3//usr/local : Local hierarchy

/usr/local,本地开发的系统文件,供组织的计算机或个人使用

用途:
1)该层次结构供系统管理员在本地安装软件时使用。系统软件更新时,需要保护它不被覆盖。
2)它可用于可在一组主机之间共享但在/usr中找不到的程序和数据。
3)本地安装的软件必须放在/usr/local中,而不是/usr中,除非安装它以替换或升级/usr中的软件。

要求:以下目录或目录的符号链接必须位于 /usr/local 中:

Directory	Description
bin		    Local binaries
etc		    Host-specific system configuration for local binaries
games		Local game binaries                                                 # 游戏
include		Local C header files
lib		    Local libraries
man		    Local online manuals
sbin		Local system binaries
share		Local architecture-independent hierarchy
src		    Local source code

/usr/local/share/emacs/

1)/usr/local:范围;
2)share:类别;
3)emacs:应用程序;

The `/var` Hierarchy

FHS-3.0/Chapter 5. The /var Hierarchy

/var/lib/<editor> : Editor backup files and state (optional)
/var/lib/color : Color management information (optional)
/var/lib/hwclock : State directory for hwclock (optional)
/var/lib/misc : Miscellaneous variable data 各种杂项变量数据

类别

程序类别

bin 程序
sbin 程序,由超级用户运行
lib 程序使用的代码库

文件类别

doc 文档
info 内置的帮助系统的文档资料
man 手册页
share 与特定程序由关的文件,比如示例、安装说明

配置类别

etc 系统或杂项的配置文件
init.d 用于启动Linux的配置文件
rc.d 用于启动Linux的配置文件

编程类别

incldue 编程时使用的头文件

src 程序的源码文件

Web文件类别

cgi-bin 在Web页面上运行的脚本和程序;

html 静态的Web页面;

public_html 公共的Web页面,通常位于用户的主目录

www Web页面

显示类别

Fonts 字体
X11 X Window System

硬件类别

dev 用来连接磁盘和其他硬件设备的设备文件
media 挂载点:提供磁盘访问的目录
mnt 挂载点:提供磁盘访问的目录

运行时类别

var 与本地计算机密切相关的文件,它们是在运行时创建和更新的
lock 由应用程序创建的锁文件
log 日志文件,用于跟踪重要的系统事件、错误、警告
mail 邮件邮箱
run PID文件,其中存放正在运行的进程的进程ID
spool 出于排队或者传输状态的文件
tmp 一个目录,临时存储程序或人们使用的文件
proc 操作系统状态

应用程序

通常存放了应用程序相关的信息。

FAQ:备份(backup)目录的合理位置

what is the default location for backup files of another server

有一个合适的位置。

有一个适当的文件系统结构的标准。目前的版本已经存在了十多年,这可能是一些Linux发行版的新闻。

Filesystem Hierarchy Standard的最新版本是2.3:http://www.pathname.com/fhs/pub/fhs-2.3.html

在那里,在var的「Purpose」部分下,它解释了为什么使用/var/backup是一个坏主意。

适当的地方应该取决于应用程序和它的用法,类似的:
1)/var/lib/<app>/backups
2)/var/local/<app>/backups
3)/var/opt/<app>/backups

(我说“类似的”是因为你使用/var/lib,/var/local还是/var/opt取决于应用程序,它在系统中的角色以及它的安装方式,基于应用程序维护者,var/lib/<app>是任意的。)

顺便说一句,既然你提到了它,/var/www并不适合用于服务的网页(对于一些发行版和包维护者来说,这是新闻,但是FHS比较老,许多人显然从未阅读过它)。用于服务提供的内容和存储的应用程序数据或者资产应该放在/srv目录中。自2005年以来,我一直在使用协议方法,并发现它工作得很好(/srv/http,/srv/ftp,/srv/git,/srv/svn等)。

假设您使用的是rsync,并且该机器正在为网络提供备份服务,那么您可以使用:/srv/rsync/backups

参考文献

文件系统层次结构标准(这个应该是官网的地址了,这个地址来自于红帽的RHCE培训手册)
Linux Foundation / FHS: https://wiki.linuxfoundation.org/lsb/fhs
FHS 3.0 HTML: http://refspecs.linuxfoundation.org/FHS_3.0/fhs/index.html
Wikipedia / FHS: https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard