[TOC]
第1章 Linux文件类型
1.文件类型与拓展名介绍
我们都知道,windows系统是通过拓展名来区分不同文件类型的,如果拓展名错误,或者没有拓展名,则会导致文件无法正常打开。
但是Linux系统不同于Windows系统,Linux系统不会根据拓展名来区分文件类型,而是通过文件给设定属性的特殊方式来区分文件类型的。虽然Linux系统中也包含各种拓展名的文件,但这些文件的拓展名,并不代表文件的类型,这些拓展名只是为了让用户更容易区分文件类型,即使文件拓展名错误,文件也可以正常运行。
简单来说:Linux下的文件拓展名只是给人看的。
2.Linux下常见的文件类型说明
文件类型:
- #普通文件(文本, 二进制, 压缩, 图片, 日志等)
d #目录文件
b #设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c #设备文件(字符设备),终端 /dev/tty1, /dev/zero
s #套接字文件, 进程间通信(socket)
p #管道文件
l #链接文件
3.使用file命令查看文件的类型
我们知道Linux里的文件类型只是给人看的,并不一定代表实际的文件格式。
那么我们如何确定一个文件的真正格式呢,可以使用file命令。
举例:
[root@linux ~]# file /etc/passwd
/etc/passwd: ASCII text
[root@linux ~]# file /dev/sda
/dev/sda: block special
[root@linux ~]# file /bin
/bin: symbolic link to `usr/bin'
[root@linux ~]# file /opt
/opt: directory
[root@linux ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped
[root@linux ~]# file nginx-1.18.0-1.el7.ngx.x86_64.rpm
nginx-1.18.0-1.el7.ngx.x86_64.rpm: RPM v3.0 bin i386/x86_64 nginx-1:1.18.0-1.el7.ngx
[root@linux ~]# file php71.tar.gz
php71.tar.gz: gzip compressed data, from Unix, last modified: Tue Jul 14 08:37:18 2020
4.Windows和Linux下常见的拓展名说明
windows常见拓展名:
.jpg #图片格式
.png #图片格式
.txt #文本格式
.tar #压缩格式
.zip #压缩格式
.exe #执行程序
Linux拓展名:
.rpm #软件包
.conf #配置文件
.sh #脚本
.tar.gz #压缩包
第2章 文件属性概述
1.文件属性解释
在Linux系统中,文件或目录的属性主要包括:索引节点,文件类型,权限属性,链接数,所归属的用户和用户组,最近修改时间等。
执行ls -lhi命令可以详细的显示/data目录下内容的常见属性信息。
[root@oldboy ~]# ls -lih /data
总用量 12K
753299 -rw-r--r-- 1 root root 4 1月 25 16:43 oldboy.txt
753300 -rw-r--r-- 1 root root 7 1月 25 16:43 oldgirl.txt
753301 -rw-r--r-- 1 root root 10 1月 25 16:43 oldzhang.txt
具体的每一列的含义如下:
753299 第1列:Inode索引节点编号
-rw-r--r-- 第2列和第3列:文件类型及权限
1 第4列:硬链接个数
root 第5列:文件所属用户
root 第6列:文件所属组
10 第7列:文件大小
1月 25 16:43 第8列:文件的修改时间
oldzhang.txt 第9列:文件或目录名(不属于属性)
第3章 Linux文件存储inode和block
1.什么是inode
Linux中一个文件实际上是分为元数据和文件内容。
其中存放文件属性信息的存储空间被称为Inode,存放实际数据的存储空间被称为Block。
Inode存储的属性信息,包括但不限于:文件大小,所属用户和所属组,文件权限,文件类型,修改时间等,指向Block位置的实体指针。
2.什么是block
Block是用来存放实际数据的空间,一般为4K大小,单个大文件需要多个Block块来存储,特别小的单个文件如果不能占满Block块,那么剩余的空间也无法利用。
3.目录和文件的关系
目录是个特殊的文件,目录里保存了当前目录下的文件名称和文件对应的inode号。
简单来说,文件名只是方便人类记忆,通过查找文件名,找到这个文件的inode号,然后再去访问对应inode。最后通过Inode找到block的指针位置,最后取到文件的内容。
示意图如下:
4.Linux删除文件
Linux的文件名是存在父目录的block里面并指向这个文件的inode节点.这个文件的inode节点再标记指向存放这个文件的block的数据块。
我们删除一个文件,实际上并不是删除inode节点和block的数据。
只是在这个文件的父目录里面的block删除这个文件的名字,从而使这个文件名消失,并且无法指向这个文件的inode节点
当没有文件名指向这个inode节点同时没有进程调用的时候,这个inode和下面的block是无主的。
在磁盘检查或者有内容写入的时候会是否释放inode节点和存放这个文件的数据块,并更新inodeMAP和blockMAP今后让这些位置存放其他文件数据。
第4章 软链接和硬链接
1.什么是软链接
软链接类似于Windows的快捷方式,软链接里存放的是原文件的路径。
当我们访问软链接时实际上是先找到原文件的文件名,然后读到原文件的Inode,然后再去找原文件的Block,最后访问到数据。
当删除软链接时并不影响原文件的访问,但是删除原文件之后,软链接就不能正常访问了。因为真正的文件没有了。
软链接特点:
1.软链接的inode和源文件不同 存放源文件的路径 指向源文件的实体
2.创建软链建 ln -s
3.创建的软链接就是普通文件 删除rm命令
4.删除链接文件不影响源文件
5.删除源文件 链接文件存在,但是无法访问源文件的内容 红底白字进行闪烁
2.什么是硬链接
在同一个文件系统中有相同的inode号的文件互为硬链接
硬链接 文件的多个入口 类似于超市有多个入口 堵死一个门不影响文件的正常使用
相当于复制多个inode号码
硬链接特点:
1.对已存在的文件做硬链接
2.inode相同 属性相同
3.只能在同一个分区内进行创建 同一个文件系统
4.不能对目录创建硬链接,只能对文件创建硬链接 扩展了解
5.删除一个硬链接不影响其他的相同inode号的文件
6.目录的硬链接默认是2个
7.可以在任意一个入口进入到文件修改内容 查看文件的时候都会发生变化
8.删除所有的相同的inode号 文件被真正的删除
3.文件链接练习
#创建目录
mkdir /data
#在目录下创建文件
touch /data/abc.txt
#创建目录的软链接
ln -s /data/ /data_link
#查看软链接的状态
ls -l /
#进入到软链接目录里,查看文件
cd /data_link
ls
#删除软链接并不会影响原来的目录
rm -rf /data_link/
4.工作中的应用场景
1.代码目录一般使用软链接来表示不同的版本
2.自己安装的软件通过软链接来表示不同的版本