下面说明目录树不同部分的任务。
每台机器都有根文件系统(一般在本地盘中,当然也可以在 RAM 盘或网络盘中),它包含系统引导和
使其他文件系统得以 mount 所必要的文件,根文件系统应该有单用户状态所必须的足够的内容。还应该
包括修复损坏系统、恢复备份等的工具。
/usr 文件系统包含所有命令、库、man 页和其他一般操作中所需的不改变的文件。 /usr 应该没有对给
定机器特定的文件,也不应该有一般使用中要修改的文件。这样允许此文件系统中的文件通过网络共享
这样可以更有效,因为这样节省了磁盘空间 (/usr 很容易是数百兆),且易于管理(当升级应用时,只有
主/usr 需要改变,而无须改变每台机器) 即使此文件系统在本地盘上,也可以只读 mount,以减少系统崩
溃时文件系统的损坏。
/var 文件系统包含会改变的文件,比如 spool 目录(mail、news、打印机等用的), log 文件、formatted
manual pages 和暂存文件。传统上/var 的所有东西曾在 /usr 下的某个地方,但这样/usr 就不可能只读安装
了。
/home 文件系统包含用户家目录,即系统上的所有实际数据。将家目录分到自己的目录树或文件系统
中易于备份,其他部分经常不必备份,至少不必经常备份(它们很少改变)。一个大的/home 可能要分为若
干文件系统,需要在/home 下加一级名字,如/home/students 、/home/staff 等。
虽然上面将不同的部分称为文件系统,但它们不必是真的分离的文件系统。如果系统是小的单用户
系统,而用户希望简单化,可以很容易地放在一个文件系统中。根据磁盘容量和不同目的所需分配的空
间,目录树也可以分到不同的文件系统中。重要的是使用标准的名字,即使/var 和/usr 在同一分区上,名
字/usr/lib/libc.a 和/var/adm/messages 必须 能工作,例如将/var 下 的文件 移动到/usr/var ,并将/var 作
为/usr/var 的符号连接。
Unix 文件结构根据目的来分组文件,即所有的命令在一个地方,所有的数据在另一个地方,所有的
文档又在一个地方,等等。另一个方法是根据属于的程序分组文件,即所有 Emacs 文件在一个目录中,
所有 TeX 文件在另一个中,等等。后一种方法的问题是文件难于共享(程序目录经常同时包含静态可共享
的和动态不可共享的文件),有时难于查找 (例如 man 页在极大数量的地方,使 man 程序查找它们极其困
难)。
根文件系统
根文件系统一般应该比较小,因为包括严格的文件和一个小的不经常改变的文件系统不容易损坏。
损坏的根文件系统一般意味着除非用特定的方法(例如从软盘)系统无法引导,所以不应该冒这个险。
根目录一般不含任何文件,除了可能的标准的系统引导映象,通常叫/vmlinuz 。所有其他文件在根文
件系统的子目录中。
/bin
引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。
/sbin
类似/bin ,但不给普通用户使用,虽然如果必要且允许时可以使用。
/etc
特定机器的配置文件。
/root
root 用户的家目录。
/lib
根文件系统上的程序所需的共享库。
/lib/modules
核心可加载模块,特别是那些恢复损坏系统时引导所需的(例如网络和文件系统驱动)。
/dev
设备文件。
/tmp
临时文件。引导启动后运行的程序应该使用/var/tmp ,而不是/tmp ,因为前者可能在一个拥有更多空间的
磁盘上。
/boot
引导加载器(bootstrap loader)使用的文件,如 LILO。核心映象也经常在这里,而不是在根目录。如果有许