一、简介
文件系统就是分区或磁盘上的所有文件的逻辑集合。
文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。
不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。
文件系统有多种类型
- ext2 : 早期linux中常用的文件系统;
- ext3 : ext2的升级版,带日志功能;
- RAMFS : 内存文件系统,速度很快;
- iso9660:光盘或光盘镜像;
- NFS : 网络文件系统,由SUN发明,主要用于远程文件共享;
- MS-DOS : MS-DOS文件系统;
- FAT : Windows XP 操作系统采用的文件系统;
- NTFS : Windows NT/XP 操作系统采用的文件系统。
二、分区与目录
文件系统位于磁盘分区中;一个硬盘可以有多个分区,也可以只有一个分区;一个分区只能包含一个文件系统。
Linux文件系统与Windows有较大的差别。Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如 C、D、E、F等。Linux的文件结构是单个的树状结构,根目录是“/”,其他目录都要位于根目录下。
每次安装系统的时候我们都会进行分区,
Linux下磁盘分区和目录的关系
- 任何一个分区都必须对应到某个目录上,才能进行读写操作,称为“挂载”。
- 被挂载的目录可以是根目录,也可以是其他二级、三级目录,任何目录都可以是挂载点。
- 目录是逻辑上的区分。分区是物理上的区分。
- 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。
下图是常见的目录和分区的对应关系:
为什么要分区,如何分区?
- 可以把不同资料,分别放入不同分区中管理,降低风险。
- 大硬盘搜索范围大,效率低。
- /home、/var、/usr、/local 经常是单独分区,因为经常会操作,容易产生碎片。
为了便于定位和查找,Linux中的每个目录一般都存放特定类型的文件,
各种Linux发行版本的常见目录
- / : 根目录,只能包含目录,不能包含具体文件。
- /bin: bin是Binary的缩写,存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对所有用户有效。
- /dev: dev是Device(设备)的缩写,硬件驱动程序。例如声卡、磁盘驱动等,还有如 /dev/null、/dev/console、/dev/zero、/dev/full 等文件。
- /etc: 主要包含系统管理所需要的配置文件和用户、用户组配置文件。
- /lib: 主要包含共享库文件,类似于Windows下的DLL;有时也会包含内核相关文件。
- /boot: 系统启动文件,例如Linux内核、引导程序等。
- /home: 用户工作目录(主目录),每个用户都会分配一个目录。
- /mnt: 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,例如挂载CD-ROM的/mnt/cdrom目录,然后进入该目录就可以查看光驱里的内容了。
- /proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
- /tmp: 临时文件目录,系统重启后不会被保存。
- /lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
- /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
- /usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。user目下的文件比较混杂,包含了管理命令、共享文件、库文件等,可以被很多用户使用。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
- /var: 这个目录中存放着在不断扩充着的东西,主要包含一些可变长度的文件,会经常对数据进行读写,例如日志文件和打印队列里的文件。
- /sbin: s就是Super User的意思,和 /bin 类似,主要包含可执行文件,不过一般是系统管理所需要的,不是所有用户都需要。
- /media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
- /opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
- /root:该目录为系统管理员,也称作超级权限者的用户主目录。
- /srv: 该目录存放一些服务启动之后需要提取的数据。
在 Linux 系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更改内部文件。
- /etc: 上边也提到了,这个是系统中的配置文件,如果你更改了该目录下的某个文件可能会导致系统不能启动。
- /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在/bin/ls 目录下的。
值得提出的是,/bin, /usr/bin 是给系统用户使用的指令(除root外的通用户),而/sbin, /usr/sbin 则是给root使用的指令。 - /var: 这是一个非常重要的目录,系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在/var/log 目录下,另外mail的预设放置也是在这里。
三、常用文件管理命令
你可以通过下面的命令来管理文件:
- cat filename: 查看文件内容。
- cd dirname: 改变所在目录。
- cp file1 file2: 复制文件或目录。
- file filename: 查看文件类型(binary, text, etc)。
- find filename dir: 搜索文件或目录。
- head filename: 显示文件的开头,与tail命令相对。
- less filename: 查看文件的全部内容,可以分页显示,比more命令要强大。
- ls dirname: 遍历目录下的文件或目录。
- mkdir dirname: 创建目录。
- more filename: 查看文件的全部内容,可以分页显示。
- mv file1 file2: 移动文件或重命名。
- pwd: 显示用户当前所在目录。
- rm filename: 删除文件。
- rmdir dirname: 删除目录。
- tail filename: 显示文件的结尾,与head命令相对。
- touch filename: 文件不存在时创建一个空文件,存在时修改文件时间戳。
- whereis filename: 查看文件所在位置。
- which filename: 如果文件在环境变量PATH中有定义,那么显示文件位置。
四、用户和群组配额
用户和群组配额可以让管理员为每个用户或群组分配固定的磁盘空间。
管理员有两种方式来分配磁盘空间:
- 软限制:如果用户超过指定的空间,会有一个宽限期,等待用户释放空间。
- 硬限制:没有宽限期,超出指定空间立即禁止操作。
下面的命令可以用来管理配额:
- quota: 显示磁盘使用情况以及每个用户组的配额。
- edquota: 编辑用户和群组的配额。
- quotacheck: 查看文件系统的磁盘使用情况,创建、检查并修复配额文件。
- setquota: 设置配额。
- quotaon: 开启用户或群组的配额功能。
- quotaoff: 关闭用户或群组的配额功能。
- repquota: 打印指定文件系统的配额。