一 linux文件结构 文件结构是文件存放在磁盘等存贮设备上的组织方法主要体现在对文件和目录的组织上 目录提供了管理文件的一个方便而有效的途径 linux使用标准的目录结构在安装的时候安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式并指定了每个目录的作用和其中的文件类型
/根目录 ┃ ┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ bin home dev etc lib sbin tmp usr var ┃ ┃ ┏━┻━┓ ┏━━━━┳━━━┳━━━┳━┻━┳━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ rcd crond XR src lib local man bin ┃ ┃ ┃ ┏━━━┳━━━┳━┻━┳━━━━┓ ┃ ┏━━━╋━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ initd rcd rcd rcd …… linux bin lib src
linux采用的是树型结构最上层是根目录其他的所有目录都是从根目录出发而生成的微软的DOS和windows也是采用树型结构但是在DOS和windows中这样的树型结构的根是磁盘分区的盘符有几个分区就有几个树型结构他们之间的关系是并列的但是在linux中无论操作系统管理几个磁盘分区这样的目录树只有一个从结构上讲各个磁盘分区上的树型目录不一定是并列的 如果这样讲不好理解的话我来举个例子
有一块硬盘分成了个分区分别是//boot/usr和windows下的fat对于/和/boot或者/和/usr它们是从属关系对于/boot和/usr它们是并列关系 如果我把windows下的fat分区挂载到/mnt/winc下那么对于/mnt/winc和/usr或/mnt/winc和/boot来说它们是从属于目录树上没有任何关系的两个分支
因为linux是一个多用户系统制定一个固定的目录规划有助于对系统文件和不同的用户文件进行统一管理但就是这一点让很多从windows转到linux的初学者感到头疼下面列出了linux下一些主要目录的功用
/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rcd 启动的配置文件和脚本 /home 用户主目录的基点比如用户user的主目录就是/home/user可以用~user表示 /lib 标准程序设计库又叫动态链接共享库作用类似windows里的dll文件 /sbin 系统管理命令这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /root 系统管理员的主目录(呵呵特权阶级) /mnt 系统提供这个目录是让用户临时挂载其他的文件系统 /lost+found 这个目录平时是空的系统非正常关机而留下无家可归的文件(windows下叫什么chk)就在这里 /proc 虚拟的目录是系统内存的映射可直接访问这个目录来获取系统信息 /var 某些大文件的溢出区比方说各种服务的日志文件 /usr 最庞大的目录要用到的应用程序和文件几乎都在这个目录其中包含 /usr/XR 存放X window的目录 /usr/bin 众多的应用程序 /usr/sbin 超级用户的一些管理程序 /usr/doc linux文档 /usr/include linux下开发和编译应用程序所需要的头文件 /usr/lib 常用的动态链接库和软件包的配置文件 /usr/man 帮助文档 /usr/src 源代码linux内核的源代码就放在/usr/src/linux里 /usr/local/bin 本地增加的命令 /usr/local/lib 本地增加的库
二 linux文件系统 文件系统指文件存在的物理空间linux系统中每个分区都是一个文件系统都有自己的目录层次结构linux会将这些分属不同分区的单独的文件系统按一定的方式形成一个系统的总的目录层次结构一个操作系统的运行离不开对文件的操作因此必然要拥有并维护自己的文件系统 linux文件系统使用索引节点来记录文件信息作用像windows的文件分配表 索引节点是一个结构它包含了一个文件的长度创建及修改时间权限所属关系磁盘中的位置等信息一个文件系统维护了一个索引节点的数组每个文件或目录都与索引节点数组中的唯一一个元素对应系统给每个索引节点分配了一个号码也就是该节点在数组中的索引号称为索引节点号 linux文件系统将文件索引节点号和文件名同时保存在目录中所以目录只是将文件的名称和它的索引节点号结合在一起的一张表目录中每一对文件名称和索引节点号称为一个连接 对于一个文件来说有唯一的索引节点号与之对应对于一个索引节点号却可以有多个文件名与之对应因此在磁盘上的同一个文件可以通过不同的路径去访问它 可以用ln命令对一个已经存在的文件再建立一个新的连接而不复制文件的内容 连接有软连接和硬连接之分软连接又叫符号连接它们各自的特点是
硬连接原文件名和连接文件名都指向相同的物理地址 目录不能有硬连接硬连接不能跨越文件系统(不能跨越不同的分区) 文件在磁盘中只有一个拷贝节省硬盘空间 由于删除文件要在同一个索引节点属于唯一的连接时才能成功因此可以防止不必要的误删除
符号连接用ln s命令建立文件的符号连接 符号连接是linux特殊文件的一种作为一个文件它的数据是它所连接的文件的路径名类似windows下的快捷方式 可以删除原有的文件而保存连接文件没有防止误删除功能
这一段的的内容过于抽象又是节点又是数组的我已经尽量通俗再通俗了又不好加例子作演示大家如果还是云里雾里的话我也没有什么办法了只有先记住日后在实际应用中慢慢体会理解了这也是我学习的一个方法吧
三 挂载文件系统 由上一节知道linux系统中每个分区都是一个文件系统都有自己的目录层次结构linux会将这些分属不同分区的单独的文件系统按一定的方式形成一个系统的总的目录层次结构这里所说的按一定方式就是指的挂载 将一个文件系统的顶层目录挂到另一个文件系统的子目录上使它们成为一个整体称为挂载把该子目录称为挂载点 举个例子吧
根分区
/根目录 ┃ ┏━━━━┳━━━━━┳━━━━━┳━━━━━╋━━━━━┳━━━━━┳━━━━━┳━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ bin home dev etc lib sbin tmp usr var ┃ ┏━┻━┓ ┃ ┃ rcd crond ┃ ┏━━━┳━━━┳━┻━┳━━━━┓ ┃ ┃ ┃ ┃ ┃ initd rcd rcd rcd ……
/usr分区
usr ┃ ┏━━━━┳━━━╋━━━┳━━━┳━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ XR src lib local man bin ┃ ┃ ┃ ┏━━━╋━━━┓ ┃ ┃ ┃ ┃ linux bin lib src
挂载之后就形成了文章开始时的那个图像不像挂上去的?
注意挂载点必须是一个目录
一个分区挂载在一个已存在的目录上这个目录可以不为空但挂载后这个目录下以前的内容将不可用 对于其他操作系统建立的文件系统的挂载也是这样但是需要理解的是光盘软盘其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的光盘是ISO软盘是fat或extwindows NT是fatNTFSwindows是fatfatwindows和windowsXP是fatfatNTFS挂载前要了解linux是否支持所要挂载的文件系统格式
挂载时使用mount命令 格式mount [参数] [设备名称] [挂载点]
其中常用的参数有 t<文件系统类型> 指定设备的文件系统类型常见的有 minix linux最早使用的文件系统 ext linux目前常用的文件系统 msdos MSDOS的fat就是fat vfat windows常用的fat nfs 网络文件系统 iso CDROM光盘标准文件系统 ntfs windows NT 的文件系统 hpfs OS/文件系统 auto 自动检测文件系统 o<选项> 指定挂载文件系统时的选项有些也可用在/etc/fstab中常用的有 codepage=XXX 代码页 iocharset=XXX 字符集 ro 以只读方式挂载 rw 以读写方式挂载 nouser 使一般用户无法挂载 user 可以让一般用户挂载设备
提醒一下mount命令没有建立挂载点的功能因此你应该确保执行mount命令时挂载点已经存在(不懂?说白了点就是你要把文件系统挂载到哪首先要先建上个目录这样OK?)
例子windows装在hda分区同时计算机上还有软盘和光盘需要挂载 # mk /mnt/winc # mk /mnt/floppy # mk /mnt/cdrom # mount t vfat /dev/hda /mnt/winc # mount t msdos /dev/fd /mnt/floppy # mount t iso /dev/cdrom /mnt/cdrom 现在就可以进入/mnt/winc等目录读写这些文件系统了
要保证最后两行的命令不出错要确保软驱和光驱里有盘(要是硬盘的磁盘片也可以经常随时更换的话我想就不会犯这样的错误了. 如果你的windows目录里有中文文件 最困难之时,就是我们离成功不远之日。