inode和block概述
- 文件数据包括元信息与实际数据
- 文件存储在硬盘上,硬盘最小储存单位是 “扇区”,每个扇区储存512字节。
- block(块)
中文译名为“索引节点”,也叫i节点
用于存储文件元信息
1、inode的内容
inode 包含很多的文件元信息,但不包含文件名,例如
文件的字节数
文件拥有着的UserID
文件的GropuID
文件的读、写、执行权限
文件的时间戳
目录文件的结构
目录也是一种文件
目录文件的结构
每一个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而是用inode号码来识别文件
对于用户来说,文件只是inode号码便于识别的别称
inode号码
(1)、系统找到这个文件名对应的inode号码
(2)、通过inode号码获取inode信息
(3)、根据inode信息,找到文件数据所在的block,读出数据
inode的大小
inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节
格式化文件系统时确定inode总数
使用df-i可以查看每个硬盘分区的inode总数和已经使用的数量
实际操作
1、我们在opt里输入mkdir abc创建一个空目录,输入 touch aaa.txt再abc目录里里创建一个空文件,可以通过ls -i 查看文件的inode节点号
2、也可stat aaa.txt查看详细情况
3、把aaa.txt创建成链接文件,输入ln aaa.txt a01.txt,再输入ls -i 查看inode号可以看到相同,但是名字都相同。
3、我们输入stat aaa.txt可以看到aaa.txt硬链接有2个。
4、用file aaa.txt可以查看文本类型。
5、也可以用ls -i查看文本类型(开头是d的为目录)。
6、inode节点可以用df -i 查看。
硬链接与软链接
在Linux下面的链接文件有两种,一种类似于Windows的快捷方式文件,可以快速连接到目标文件或目录;另一种则是通过文件系统的inode链接来产生的新文件名,而不是产生新文件,这种称之为硬链接。
1、硬链接
一般情况下,文件名和inode号码是一一对应关系,每个indoe号码对应一个文件名。
由于硬链接的元数据与源文件的完全一致(就是同一条元数据),所以有了它的一系列特性。
1,不能跨文件系统;
2,有相同的iNode和data block;
3,硬链接只能对已经存在的文件进行创建;
4,不能针对目录文件进行创建,Linux文件系统在设计时对目录默认创建了两个硬链接, . .. 如果再支持目录创建硬链接的话会生成目录环可能会造成死锁(笔者一家之言);
5,删除文件时,必须删除所有的硬链接才能真正释放data block.
软链接
软链接就是再创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。
1、 软连接有自己的元数据,所以可以对其进行权限控制(作用于原文件)
2、 可跨越文件系统(包括网络)创建软连接
3、可对不存在的文件和目录创建(打破不能链接目录的限制)
4、 创建软连接,源文件链接数不增加
5、 删除软连接时不影响源文件
恢复误删除的文件
我们删除一个文件,实际上并不清楚inode节点和block的数据,只是在这个文件的父目录里面的block文件,删除这个文件的名字。Linux是通过Link的数量来控制文件删除,只有当一个文件不存在任何Link的时候,这个文件才会被删除。
·
1、需要使用在开始操作之前我们需要安装实验所需要的软件包,我们的光驱挂载在/mnt/里,开始安装所需要的软件,
在安装第二个包之前要安装libcom。
2、现在要把工具包进行编译安装,在编译之前输入smbclient -L //192.168.10.10/
看看共享出来的文件名是什么。
3、知道文件名之后就开始进行编译安装
创建mkdir /aaa,输入mount.cifs //192.168.10.10./CAA/aaa ,就可以看到/aaa里就有里extundelete这个包
4、对这个压缩包进行解压输入tar jxvf extundelete-0.2.4.tar.bz2 -C /opt/
5、进入extundelete-0.2.4./中,可以看到configure。
6、配置之前要安装环境,输入yum install gcc gcc-c++ -y。
7、./configure 直接进行执行。
8、输入make install 进行安装。
9、接下来将添加的磁盘进行分区和格式化。
10、进行挂载,mkdir /data 输入mount /dev/sdb1 /data,然后进入data里查看。
11、在data里写入三个文件。
12、模拟删除文件,rm -rf b,b的文件就被删除了
13、这时候我们就可以恢复了,在这之前要先解挂载。
14、接下来输入extundelete /dev/sdb1 --restore all,来恢复删除的所有文件,如果误删了文件之后,要立马将设备解挂载,要不然新的文件将你的inode号占用就无法恢复了。
15、输入cd RECOVERD_FILES/就可以看到恢复的文件。
恢复LINUX中XFS类型的文件
xfsdump命令
格式:xfsdump -f 备份存放位置 要备份的路径或设备文件
常用选项:
-f:指定备份文件位置
-L:指定会话标签(免交互)
-M:指定设备标签(免交互)
-s:备份指定的文件
xfsrestore命令
格式:xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
-f:指定备份文件位置
-s:恢复指定文件恢复
-t:查看文件的内容及详细信息
1、首先添加一块磁盘,然后对其进行配置,格式化为xfs格式,然后挂载到新建的目录/data里。
2、复制passwd文件到“/data/”目录下,然后在“/data/”目录里新建一个“test”目录,并在目录里创建一个空文件。
3、返回到data目录下,然后将sdb1里的分区备份到/opt/里,命名为"xfs_dump"。
4、删除/data/里的内容,模拟删除。
5、删除完之后现在我们开始恢复。
6、输入ls查看你/data/里文件是否恢复回来。
xfsdump使用限制:
1、只能备份已挂载的文件系
2、必须使用root的权限才能操作
3、 只能备份XFS文件系统
4、备份后的数据只能让xfsrestore解析
5、 不能备份两个具有相同UUID的文件系统
来源:https://blog.51cto.com/14307755/2434544