Linux文件系统标准
ubuntu吧
全部回复
仅看楼主
level 12
peterliu1218 楼主
Linux的文件目录结构是按照「文件系统层次结构标准」(FilesystemHierarchy Standart;FHS)所结构,这个标准最新一版是2004年的2.3版。他的目的是规范哪一类型的文件,必须放置在哪个目录下。由于FHS只是比较松散的规范了第一层与部份的第二层,所以不同的Linux发行版,彼此之间还是有少许的差异;此外,某些软件对自己文件的定义,也有不太一样的看法,所以放置的位置也与一般软件不太相同。
详细内容可以在FHS的官网查看:http://www.pathname.com/fhs/
或者下载pdf档:http://www.pathname.com/fhs/pub/fhs-2.3.pdf
Unix与类Unix的出现,远早于FHS,所以大多数都有自己的标准,Linux出现的初期,此标准也尚未完成创建,所以早期的类Unix与Linux发行版,目录结构差异很大。自由软件基金会维护的FHS成立后,才渐趋一致。
当前大多数的Linuxdistribution都是按照FHS,但毕竟Linux是开放的,有少部份的Linux完全不按照标准,如GoboLinux,采用类似Windows的目录结构,软件的目录都位在/Programs下(最近好像复活了,又开始要发行新版,http://gobolinux.org/
2014年02月06日 08点02分 1
level 12
peterliu1218 楼主
我只简单地介绍Linux的文件目录结构。
/:这是整个文件系统的根目录,所有的目录都是由此衍生而来。此外,根目录与开机、撤消、修复有关。也因此,FHS推荐,根目录所在的分区,越小越好;还有不应该在根目录下自行新增目录与文件,以减少错误的发生机率,也可以提高性能。
根目录是开机最早挂载进来的,所以有些必要的工具,「不可以」放到其它的分区当中,包括了/etc,/bin, /dev, /lib, /sbin。
2014年02月06日 08点02分 2
哎呀,我一直分得很大,而且还把VBOX被人文件设定在里面。。。
2014年04月21日 07点04分
level 12
peterliu1218 楼主
以下是位于根目录下所必须有的目录:
/boot:
开机引导的相关文件,包含了开机核心与开机选单及配置文件,是整个系统核心开始进入用户模式前所需要的文件。
这个目录下的文件因为早于根目录挂载前被读入,所以许多人喜欢把/boot额外放置在一个独立分区。虽然在正常的开机过程当中,/boot并非必须在独立分区当中,但是在根目录有异常时,独立的/boot分区,至少可以让initramsfs引导,让管理者可以手动挂载根目录来处理异常状况。
2014年02月06日 08点02分 3
level 12
peterliu1218 楼主
接下来这五个目录必须跟根目录在同一个分区:
/bin:
必要的系统指令,包括了管理者与一般用户的指令。特别是进入singleuser mode时,可能也是你仅能动用的指令。所以这些指令,你应该要有基本了解。
/sbin:
必要的系统指令,而且多仅限于root使用的程序,所以这些指令通常与开机与修复撤消有关。
/lib:
必要的共享函式库与核心模块。何为「必要」?就是开机、/bin、及/sbin会调用使用的。其中/lib/modules这个目录,就是核心相关驱动放置的地方。
/dev:
Linux下的所有设备,都是以文件模式来呈现的。所以这目录下文件代表了你硬件的设备。当你访问这里的某个文件时,就相当于访问某个设备。如硬盘就是/dev/sd*,随机数产生器就是/dev/urandom,光盘机就是/dev/sr*等。
/etc:
几乎系统主要的配置文件都在这里。假如你对系统调校很有兴趣,那你大概会花绝大多数的时间在这个目录下。这个目录也是我个人在备份系统时,唯一一定会整个复制下来的目录。
2014年02月06日 08点02分 4
level 12
peterliu1218 楼主
以下是挂载媒体的目录:
/media:
可移除媒体的挂载点。一般USB外接的硬盘、cdrom、软盘都是挂载到这里了。
/mnt:
暂时挂载文件系统的挂载点。一般未包含在整个文件系统必要目录的分区,都是挂载在这个目录下。
这两个目录,其实有著混淆的关系。以前早期,cdrom,floppy都是挂载在/mnt下的,但USB外接设备的兴起,让不同的Linux发行版,有著不同的策略。如Ubuntu就把所有未特定指名挂载处的设备,都当成「可移除媒体」,全部都挂在/media下。
2014年02月06日 08点02分 5
level 12
peterliu1218 楼主
/opt:
额外的软件安装处。
/srv:
服务的数据目录。
以上两个目录,在ubuntu中仍存在,但几乎不再用到。
在以前,网页服务器的网页存储在/srv/www下,但现在都搬到/var/www下了;一些第三方软件,以前都放在/opt下,现在也多放到/usr下去了。仅剩下少数的软件,会使用/opt放置软件。
2014年02月06日 08点02分 6
我在opt装的软件比usr大一倍。。。
2014年06月27日 23点06分
level 12
peterliu1218 楼主
/tmp:
让程序或者用户暂时放置文件的地方,所以这个目录也是任何人都可以访问的。
在FHS的推荐当中,这个目录下的数据,应该在开机时都予以删除。因此,不要在里面放置必须保存的文件,甚至可以把这个目录挂在到内存当中,让他在关机时,一并清除,还可以加快程序执行。
请参考如何把/tmp挂到内存去
https://tieba.baidu.com/p/2711804658
2014年02月06日 08点02分 7
level 12
peterliu1218 楼主
/home:
用户的家目录所在的目录。以帐号为目录名,位在这个目录之下。
/root:
root的家目录。既然是最高权限的管理者,当然需要一些特权,来放置系统管理所必须的文件。所以独立一个目录给他使用。
虽然我列出这两个目录,但其实这两个目录「并非」根目录系统所必须要有的目录。大家或许很讶异,但其实想一下就知道了:这两个目录不存在,并不影响用户或管理者的登录注销,更不会影响整个系统的运行。顶多让用户与管理者不能存储自用的文件而已。
在一些服务器,虽然有这两个目录,但用户与管理者根本不会用到这些空间。在桌面系统,大家会把最大的空间留给/home,但服务器几乎完全是相反的,甚至只留个几mb让你放一些基本的分配文件,如.bashrc等等,强制避免宝贵的硬盘空间被浪费掉。
2014年02月06日 08点02分 8
level 12
peterliu1218 楼主
/usr:
先说明一下,usr「不是」user的缩写,而是unixsoftwareresource的缩写。所以顾名思义,这个目录是放置软件用的。软件的开发者,不应该自行在这个目录下新增目录,而是应该合理的把文件放置到/usr下的各目录当中。除了基本系统所需的文件之外,绝大多数的软件都放置在/usr下,所以你会看到/usr下的目录,有点类似根目录的结构。如果扣除掉个人的文件,你会发现这个目录是整个系统占据容量最大的目录。
以下这几个都是/usr下重要的目录:
/usr/bin:
绝大多数用户所使用的指令,都放在这个目录下。若以ls-l 观察,你会发现这些文件几乎都是755权限,意即最终用户可以读入或使用但不能更改的。
/usr/sbin:
系统指令但非基本系统所需的,如一些daemon类的指令。
/usr/lib:
应用软件所需的函式库。当然这里所指的应用软件,指的是/usr/bin与/usr/sbin下的软件。
/usr/share:
放置共享文件的地方,如我们常查询指令参数用的man,或者应用程序的说明,就是指向这个目录的文件。
/usr/include:
假如你会自行编译安装软件,所需要的header或include,就是位在此处。
/usr/src:
软件的原始码放置处。
/usr/local:
这个要特别说明一下,你把他打开,会发现这个目录下的结构,有点像根目录,或许可以说非常像/usr的目录结构。没错,这个目录也是放置应用软件的地方。所以也有bin,lib等等。
那有什么不同呢?一般发行版所包含的软件,一般都是创建在/usr下,但是管理者自行从其它Linux发行版安装的软件,就必须放置在这个目录下,以示区别。利用这个特性,你可以把两个不同版本的同一软件,安装在同一台机器上。
2014年02月06日 08点02分 9
level 12
peterliu1218 楼主
/var:
对于常变动的数据文件,会放置在这里。这样说明,似乎很难理解何为「常变动」的文件。
看看他包含哪些目录,作什么用途,你应该就可以理解:
/var/cache:
快取缓冲文件放置处,如/var/cache/apt/archives中,有你sudoapt-get upgrade与sudoapt-get install所下载的.deb。
/var/mail:
邮件服务存放邮件处。
/var/www:
网页服务存放网页处。
/var/log:
系统运作的log档,几乎都放在此处。
/var/spool:
队列文件放置处。如/var/spool/cron放置了工作排程数据。
/var/lib:
软件执行过程中,放置数据文件的地方。如/var/lib/mysql放置了MySQL数据库。
2014年02月06日 08点02分 10
level 12
peterliu1218 楼主
还有两个非FHS所规范,但是也是相当重要的目录:
/proc:
这个目录下的所有数据都是在内存当中。主要是一些系统进程数据。所以只是徒有目录或文件的模式,但是完全不占用磁盘空间。
/sys:
这个目录的所有数据,也是都在内存当中,包括了核心、模块、硬件设备信息等。当然也是完全不占用磁盘空间。
2014年02月06日 08点02分 11
level 11

 ✎﹏₯㎕………………………………
来自华为Ascend P6 
2014年02月07日 05点02分 12
level 7
拜读了,学习了。不错!
2014年02月13日 13点02分 14
level 10
学习,大概过了一遍,对linux文件规范加深了认识,估计我还会回来再看的。
2014年02月13日 15点02分 15
level 8
解释的很详细[真棒],印象深刻了[太开心]
2014年02月13日 19点02分 16
level 14
[真棒]
2014年02月13日 21点02分 18
level 9
请问上面所说的/boot放在别的分区的意思是这样的么:比如我一块硬盘分了两个区,其中一个放了/,/boot放到另外一个分区么
2014年03月01日 10点03分 19
是的,你的理解没有错误。而且这些分区不必在同一块硬盘上。举例说明,我分割了一块300mb,一块10gb的分区,把/boot挂载到300mb的分区,再把 / 挂载到10gb的分区。 Linux的分区概念与Windows完全不同,新手刚入手常不能理解。
2014年03月01日 11点03分
回复 peterliu1218 :就是说在win下面这些东西都是在比如说C盘一个盘下面,而linux可以分开来?还有个问题是,软件是只能安装在/usr 和 /opt这些下面的,而不能像win那样在系统安装好过后可以在别的盘安装是么?
2014年03月01日 12点03分
回复 ty浮生若梦 :在Windows,系统与系统软件装在c:\windows下,一般软件安装在c:\Program Files\下。但Linux不是这样的,系统软件,执行档放在/bin下,函式库放在/lib下,设定档放在/etc下;一般软件,执行档放在/usr/bin下,函式库放在/usr/lib下,等等...每个文件放置处是有规范的,就是本文所介绍
2014年03月01日 12点03分
回复 ty浮生若梦 :因为你不习惯,所以你应该会觉得很复杂。但习惯了之后,你会很清楚,你要去哪边找你所要的。在Windows,这部份开放给软件开发者自行决定;但Linux,开发者必须遵守规范。
2014年03月01日 12点03分
level 11
/usr是安装的软件所在目录,/home是用户用来存东西的地方。那哪个应该分得大一些呢?大概多大?
2014年03月01日 13点03分 20
https://tieba.baidu.com/p/2854095359 6,7楼。我的电脑装了很多软件(包括桌面的软件, libreoffice的art-work等,后者有1G),不过没有装游戏,/usr也不过4~5G。假如你不装游戏,那应该也是6~7G就够了;要装游戏的话,我就没办法估了,这真的没经验,我想或许30G?(够装3个吧...)
2014年03月01日 13点03分
/home比较好解决,反正到时另外准备一个移动硬盘,不用的搬过去移动硬盘即可。所以保证日常使用的话,大概也是5~10G。其实这也牵扯到你的日常使用包括哪些?假如有下载影片的话,再多也不够用....
2014年03月01日 13点03分
回复 peterliu1218 :那就分得一样大吧。我看我wIn下好像就消耗得一样多。500G硬盘都分200G如何?
2014年03月01日 14点03分
回复 Nick_Aaron :你准备拿500G出来分?好吧!那把/home分大一点,我想游戏应该也吃不到200G....10个dota2也不过80G..../home 300g , /usr 100G吧
2014年03月01日 14点03分
1 2 3 尾页