天天看点

Linux系统文件管理基础

Linux系统文件管理基础

在linux系统中,目录被组织成一个:单根倒置树结构,文件系统从根目录开始,用/来表示。文件名称区分大小写( 大小写敏感还需要看具体的文件系统格式 ),以.开头的为隐藏文件,路径用/来进行分割(windows中使用\来分割),文件有两个种类:元数据与数据本身。在操作linux系统时,通常会遵循以下两种分层结构规则:lsb (linux standard base) / fhs(filesystem hierarchy standard)

linux文件系统名称最长为255字节(字节,不是字符)。包括路径在内的文件名称最长为4095字节。文件颜色显示不同,代表了不同的文件格式。(以下为默认格式,可以在/etc/dir_colors中自定义)

蓝色 -> 文件夹。

绿色 -> 可执行文件

红色 -> 压缩文件

浅蓝色 -> 链接文件

灰色 ->其他文件

在linux中,除了斜杠和nul字符,都可以用来命名。不推荐使用特殊符号来命名文件或者目录,容易引发混淆.比如空格, -,非要创建就用””引用起来,但如果遇到用特殊字符命名的特殊文件,在该文件上加上文件路径后即可进行查看,创建,删除。.. 表示父目录 .表示当前目录。

/:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中。

/bin : 提供用户使用的基本命令, 存放二进制命令,不允许关联到独立分区,os启动会用到里面的程序。

/boot:用于存放引导文件,内核文件,引导加载器。

/sbin:管理类的基本命令,不能关联到独立分区,os启动时会用到的程序(重要的命令通常处于bin,不重要的则安装在sbin)。

/lib:存放系统在启动时依赖的基本共享库文件以及内核模块文件。系统使用的函数库的目录 也存放了大量的脚本库文件,程序在执行过程中,需要调用时会用到。

/lib64:存放64位系统上的辅助共享库文件。

/etc: 系统配置文件存放的目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件 。

/home:普通用户主目录,当新建账户时,都会分配在此,建议单独分区,并分配额外空间用于存储数据。

/root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。

/media:便携式移动设备挂载点目录。

/mnt:临时文件系统挂载点。

/dev:设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,存放连接到计算机上的设备(终端、磁盘驱动器、光驱及网卡等)的对应文件 (b 块文件随机访问,c 字符文件线性访问)。

/opt:第三方应用程序的安装位置。

/srv: 服务启动之后需要访问的数据目录,存放系统上运行的服务用到的数据,如www服务需要访问的网页数据存放在/srv/www内。

/tmp:存储临时文件, 任何人都可以访问,重要数据一定不要放在此目录下。

/usr:应用程序存放目录,/usr/bin 存放保证系统拥有完整功能而提供的应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,第三方应用程序的安装位置,/usr/share/doc 系统说明文件存放目录。

/var :放置系统中经常要发生变化的文件,如日志文件。/var/log 日志目录及文件。/var/tmp:保存系统两次重启之间产生的临时数据。

/proc:用于输出内核与进程信息相关的虚拟文件系统,目录中的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。

/sys : 用于输出当前系统上硬件设备相关的虚拟文件系统。

/selinux:存放selinux相关的信息安全策略等信息。

每个文件都有属性信息,比如:文件的大小,时间,类型等称为文件的元数据(meta data),这些元数据是存放在node(index node)表中。node表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息。第一个node表记录对应的保存了一下信息:

inode number 节点号

文件类型

权限

uid

gid

链接数(指向这个文件名路径名称个数)

该文件的大小和不同的时间戳

指向磁盘上文件的数据块指针

有关文件的其他数据

Linux系统文件管理基础

1、根据文件名,通过directory里的对应关系,找到文件对应的inode number。

2、再根据inode number读取到文件的inode table里对应的条目。

3、再根据inode table中的pointer读取到相应的blocks。

Linux系统文件管理基础

这里有一个重要的内容,就是directory,他不是我们通常说的目录,而是一个列表,记录了一个文件/目录名称对应的inode number。如下图:

Linux系统文件管理基础

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区(inode table),存放inode所包含的信息。

每个inode节点的大小,一般是128字节或256字节。inode节点的总数,在格式化时就给定,一般是每1kb或每2kb就设置一个inode。假定在一块1gb的硬盘中,每个inode节点的大小为128字节,每1kb就设置一个inode,那么inode table的大小就会达到128mb,占整块硬盘的12.8%。

查看每个硬盘分区的inode总数和已经使用的数量,可以使用df命令。

查看每个inode节点的大小,可以用如下命令:

由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。

ls命令只列出目录文件中的所有文件名,ls -i命令列出整个目录文件,即文件名和inode号码:

目录文件的读权限(r)和写权限(w),都是针对目录文件本身。由于目录文件内只有文件名和inode号码,所以如果只有读权限,只能获取文件名,无法获取其他信息,因为其他信息都储存在inode节点中,而读取inode节点内的信息需要目录文件的执行权限(x)。

每个文件有三个时间戳:

access time 访问时间,atime,读取文件内容

modify time 修改时间,mtime,改变文件内容(数据)

change time 改变时间,ctime,元数据发生改变

touch命令可以用来创建空文件或刷新文件的时间

格式:

选项说明:

-a 仅改变 atime和ctime

-m 仅改变 mtime和ctime

-t [[cc]yy]mmddhhmm[.ss] 指定atime和mtime的时间戳

-c 如果文件不存在,则不予创建

本质:

硬链接:本质是同一个文件

软链接:本质不是同一个文件

跨设备

硬链接:不支持

软链接:支持

inode

硬链接:相同

软链接:不同

链接数

硬链接:创建新的硬链接,链接数会增加,删除硬链接,链接数减少

软链接:创建或删除,链接数不会变化

文件夹

相对路径

硬链接:原始文件相对路径是相对于当前工作目录

软链接:原始文件的相对路径是相对于链接文件的相对路径

删除源文件

硬链接:只是链接数减一,但链接文件的访问不受影响

软链接:链接文件将无法访问

硬链接:和源文件相同

软链接:链接文件,和源文件无关

pwd命令: printing working directory。

命令 cd : change directory 改变目录。可以使用绝对或相对路径:

切换至父目录: cd ..

切换至当前用户主目录: cd

切换至以前的工作目录: cd -

ls 命令可以列出当前目录的内容或指定目录。

查看文件状态 stat 。

利用echo命令显示字符串或者创建文件。

利用 cp(copy)命令可以实现文件或目录的复制。

利用cat命令显示文件内容。

利用rm命令删除文件。

利用mv命令移动并更改文件名字。

利用vim创建并编辑文件。