文件管理
文件管理
by:fengciaimei
一、根目录层级结构介绍
文件系统遵循FHS(filesyststem hierarchy standard)规范,文中定义了各个目录作用。
boot目录:
此目录存放系统启动过程中的引导目录,其中grub引导程序及其配置文件,vmlinuz内核文件,initramfs类伪文件系统
bin目录:
在centos6及以前版本中存放了系统启动时用到的最基础命令。也是说有用户的PATH路径下必须重要路径之一。此目录不能单独分区。此目录下不能又子目录。
在centos7、8中此目录已经变成了/usr/bin的软连接。也就是在后续系统列中弱化了bin、usr/bin相关分类概念。
sbin目录:
同bin目录一样,都是系统启动时用到的基础管理命令。此目录同样不能单独分区。
在centos6及以前版本中sbin目录时独立目录
centos7、8中时/usr/sbin目录的软连接。
dev目录:
linux系统中存放设备文件和特殊文件的目录,同样不能单独分区。此目录下设备文件分字符设备文件和块设备文件。
字符设备文件,又称线性设备文件,以c为类型标识符,线性访问设备。
块设备文件,又称随机设备文件,以b为类型标识符,随性访问设备。
etc目录:
主要用于存放系统程序配置文件的目录,此目录也是层级目录,但现在大多数程序会以程序名为文件夹名的形式在etc目录下存放配置文件。
root目录:
root用户的家目录,可有可无,一般不建议root用户登录。
home目录:
普通用户家目录,可有可无。
lib目录:
基础库文件存放路径。此目录存放/bin /sbin中程序所用到库文件,同时此目录下的modules中存放了内核模块文件,此目录不可单独分区。在cenos7\8中此目录已经变成了/usr/lib目录的软链接。
lib64目录:
基于x86_64系统中必要的基础库文件存放路径。同样是/bin和/sbin中此程序所用到的库文件存放路径,不可独立分区,在cenos7\8中此目录已经变成了/usr/lib64目录的软链接。
tmp目录:
程序临时文件保存路径。此目录权限特殊。
media目录:
可移动设备的挂载点,如:cdrom\floppy\U盘等
mnt目录:
其它文件系统挂载点。
usr目录:
usr,现在已经不是user的缩写,而是Unix System Resource的简写,此目录的重要性仅次于根目录。不可独立分区。
bin 主要存放保证系统拥有完整功能而提供的应用程序
sbin 更丰富的管理类应用程序存放路径
lib 提供更加丰富的库文件
Include C程序头文件存放路径
share 帮助文件的存放路径
local 独立层级结构,里面又提供bin sbin etc lib等,第三方应用程序存放路径。
src 源码存放路径
opt目录:
早期第三方应用程序存放路径。
var目录:
从名称上讲,主要存放可以变化的数据。日志、邮件、临时文件等等
cache 应用程序缓存的存放目录
lib 发生状态变化数据的存放目录
local 主要用于存放/usr/local下发生状态变化数据的应用程序存放目录
lock 锁文件的存放目录
log 日志文件的存放目录
opt 用于存放/opt下发生状态变化数据的应用程序存放目录
run 用于存放运行中进程产生的数据
spool 应用程序数据池
tmp 保存系统两次重启之间产生的临时数据
proc目录:
存放内核和进程相关信息的虚拟文件系统,大多数为内核参数。此目录中的数据存放于内存当中。
sys目录:
用于输出当前系统上硬件设备相关信息虚拟文件系统。
selinux目录:
selinux相关的安全策略等信息的存储位置。
应用程序各组成部分存放路径:
二进制程序:/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/localsbin /opt
库文件: /lib /lib64 /usr/lib /usr/lib64 /usr/local/lib /usr/local/lib64
配置文件: /etc /usr/local/etc
帮助文件: /usr/share /usr/local/share
二、文件名命名规则
1,文件名长度不能超过255个字符
2,不能使用/当文件名,也就是支持除了使用/以外的任意字符
3,文件名严格区分大小写
4, 目录也是文件,在同一路径下,两个文件不能重名
5,以 . 开头的文件为隐藏文件
6,包括路径在内文件名称最长4095个字节
三、文件名通配
* 匹配零个或多个任意字符,但是不能匹配点开头的隐藏文件
? 匹配任意一个字符。
[] 匹配指定范围内的任意一个字符。
[a-e] 会匹配出 a A b B c C d D e,是按小大小大的形式匹配。
~ 表示家目录
~+或. 表示当前工作目录
~- 表示之前所在的目录
^ 取反
[^] 去皮指定范围外的任意单个字符
字符集:
[[:upper:]] 大写字母集
[[:lower:]] 小写字母集
[[:digit:]] 数字集
[[:alpha:]] 大小写字母集
[[:alnum:]] 字母和数字集
[[:blank:]] 水平空白字符集
[[:space:]] 水平或垂直空白字符集
[[:punct:]] 标点符号集
示例说明,演示[a-e]会匹配出大写字母
[root@CentOS7 data]# mkdir test [root@CentOS7 data]# cd test [root@CentOS7 test]# mkdir {a..z} [root@CentOS7 test]# ls a A b B c C d D e E f F g G h H i I j J k K l L m M n N o O p P q Q r R s S t T u U v V w W x X y Y z Z [root@CentOS7 test]# ls -d [a-e] a A b B c C d D e
示例说明,解释星号不能匹配隐藏文件
[root@CentOS8 1]# touch 1 2 3 .4 [root@CentOS8 1]# ls 1 2 3 [root@CentOS8 1]# ls -a . .. 1 2 3 .4 [root@CentOS8 1]# rm -f * [root@CentOS8 1]# ls -a . .. .4
四、文件元数据和节点表结构
每个文件的属性信息,比如:文件的大小,时间,类型等,称为文件的元数据(meta data)。
这些元数据是存放在node(index node)表中。node 表中有很多条记录组成,第一条记录对应的存放了一个文件的元数据信息
第一个node表记录对应的保存了以下信息:
inode number 节点号
文件类型
权限
UID
GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
目录也是一种文件,目录文件内容中记录了该目录下各个文件的文件名和对应的inode号码。
五、软硬链接
软链接:
相当于windows中的快捷方式,可以跨文件系统引用,可以引用目录。软连接文件实际只是记录了源文件相对或绝对路径,源文件遭到破坏后软连接文件也就不能使用了。
软链接如果使用相对路径,是相对于原文件的路径,而非相对于当前目录。
语法: ln -s filename [linkname]
硬链接:
硬链接本质上就给一个文件起一个新的名称,实质是同一个文件。创建硬链接后文件的链接次数加1。
不能对目录创建硬链接,不支持夸文件系统创建硬链接。
语法:ln filename [linkname ]
软硬链接对比说明:
1.、软链接本质上是一个新的文件、只是一个快捷方式,硬链接本质上是同一个文件,重新命名了一个新名称
2、 创建软链接不会增加链接数,创建硬链接、会增加文件链接数
3、软链接支持跨分区、跨设备、目录,硬链接不支持跨分区、跨设备、目录
4、创建软链接节点编号与原始文件节点编号不相同。创建硬链接,节点编号与原始文件节点编号相同
5、软链接文件与原始文件有主次之分,软链接文件依赖原始文件。硬链接文件与原始文件关系平等