一、inode和block概述
重点:硬盘最小存储单位是 “扇区”,每个扇区存储512B ,而八个扇区组成的一个block(4K)是文件存取的最小单位。
一个文件必须占用一个inode,但至少占用一个block。
1、 inode包含文件的元信息
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳
2、用stat命令可以查看某个文件的inode信息
示例:stat 123
3、Linux系统文件三个主要的时间属性
wq!强制保存退出,三个时间一起改变
q!不保存退出,只有最近访问时间改变
chmod 777 123
更改权限属性,只有最近改动时间改变
atime(accesstime):
当使用这个文件的时候就会更新这个时间。
mtime(modification time):
当修改文件的内容数据的时候,就会更新这个时间,而更改权限或者属性,mtime不会改变,这就是和ctime的区别。
ctime(status time):
当修改文件的权限或者属性的时候,就会更新这个时间,ctime并不是create time,更像是change time,
只有当更新文件的属性或者权限的时候才会更新这个时间,但是更改内容的话是不会更新这个时间。
4、inode的内容
目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系。
一个目录是目录下的文件名和文件inode号之间的映射。
文件是如何找到实际数据的?
Linux 通过文件夹中会有一张 文件名 和 inode 一一对应关系的表,去找 inode号,然后 inode 指向对应的实际数据。
5、inode的号码
补充:当vim写入内容的时候,块存储数据后,inode信息肯定会发现变化。
6、文件存储小结
7、inode的大小
8、inode的特殊作用
由于inode号码和文件分离,导致一些Unix/Linux系统具有以下的现象:
1.文件名包含特殊字符,可能无法正常删除。这时直接删除 inode,能够起到删除文件的作用;
2.移动文件或重命名文件,只是改变文件名,不影响 inode 号码;
3.打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。
4.使用 vi 编辑器修改文件数据保存后,会生成一个新的 inode 号码。
对于中文乱码文件,可以通过以下命令删除:
find /opt -inum 34376268 -exec rm -rf {} ;
#其中34376268为inode号
9、链接文件
硬链接:ln 源文件 目标位置
软连接:ln -s 源文件或目录 连接文件或目标位置
二、案例:恢复EXT类型的文件
-
编译安装extundelete软件包
安装依赖包
e2fsprogs-libs-1.41.12-18.el6.x86_64.rpm
e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm -
配置、编译及安装
extundelete-0.2.4.tar.bz2 -
模拟删除并执行恢复操作
extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
1、使用fdisk创建分区/dev/sdb1,格式化ext3文件系统
2、挂载在 /opt/data
3、安装依赖包
4、编译安装 extundelete
5、解压
6、安装编译环境
7、指定路径并重新加载
8、创建软连接
9、模拟删除并执行恢复操作
注意:文件目录inode号都是从2开始
10、删除文件
11、解挂载
12、恢复文件
extundelete /dev/sdb1 --restore-all
注意:恢复文件不要选择在当前目录恢复,要换到其它目录。
注意:在家目录下,恢复sdb1硬盘下所有文件系统的所有文件及内容。不要在挂载的目录下恢复文件,如果在挂载的目录恢复文件,文件名会改变。
三、案例:恢复XFS类型的文件
xfsdump 的命令格式为:
xfsdump -f 备份存放位置 要备份的路径或设备文件
xfsdump 命令常用的选项:
-f:指定备份文件目录
-L:指定标签 session label
-M:指定设备标签 media label
-s:备份单个文件,-s 后面不能直接跟路径
xfsdump使用限制:
1.只能备份已挂载的文件系统
2.必须使用root的权限才能操作
3.只能备份XFS文件系统
4.备份后的数据只能让xfsrestore解析
5.不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
1、使用fdisk创建分区/dev/sdb2,格式化xfs文件系统
fdisk /dev/sdb
2、格式化文件系统并挂载
准备工作,将 /etc/passwd 和 /etc/shadow 复制到挂载的目录 /data 里。
3、使用 xfsdump 命令备份整个分区
xfsdump -f /opt/dump_sdb2 /dev/sdb2 [-L dump_sdb2 -M sdb2] #把整个 sdb2 分区的文件备份到指定的文件目录 /opt/dump_sdb2
4、模拟数据丢失并使用 xfsrestore 命令恢复文件
四、日志文件
日志的功能
- 用于记录系统,程序运行中发生的各种时间
- 通过阅读日志,有助于诊断和解决系统故障
日志文件的分类
-
内核及系统日志
由系统服务rsyslog统一进行管理,日志格式基本相似
主配置文件 /etc/rsyslog.conf -
用户日志
记录系统用户登录及退出系统的相关信息 -
程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
-
内核及系统日志
内核及系统日志由系统服务 rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录 /var/log/ 下。
查看rsyslog.conf配置文件:vim /etc/rsyslog.conf
*.info:表示info等级及以上的所有等级的信息都写在对应的日志文件里
none:表示某件事的信息不写到日志文件里
1、内核及公共消息的日志文件
/var/log/messgaes:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的时间记录信息
2、计划任务日志
/var/log/cren:记录crond计划任务产生的事件信息
3、系统引导日志
/var/log/dmesg:记录LInux系统在引导过程中的各种事件信息
4、邮箱系统日志
/var/log/maillog:记录进入或发出系统的电子邮件活动
5、用户登录日志
/var/log/secure:记录用户认证相关的安全事件信息
/var/log/lastlog:记录每个用户最近的登录信息(二进制格式)
/var/log/wtmp:记录每个用户登录、注销、及系统启动和停机事件(二进制格式)
/var/log/btmp:记录失败的、错误的登录尝试及验证事件(二进制格式)
例1:用 ls 查看messages日志文件并用 tail -f 追踪所查看的日志文件
users #显示目前登录的系统用户,最先登录的在最左边
w #显示目前登录系统的用户的详细信息
last #列出截至目前登录过系统的用户信息
lastb #查询登录用户失败的用户记录
- 日志管理策略
将ssh服务日志单独存放
关闭服务端和客户端防火墙、selinux
setenforce 0
systemctl stop firewalld
vim /etc/rsyslog.conf
vim /etc/ssh/sshd_config
重启服务
systemctl restart rsyslog.service
systemctl restart sshd
验证
配置日志服务器来收集日志
//关闭服务端和客户端防火墙、selinux
setenforce 0
systemctl stop firewalld
systemctl disable firewalld
配置发送方:
//修改客户端配置文件,并启动服务
配置接收方:
//修改服务端配置文件,并启动服务
vim /etc/rsyslog.conf
验证结果
发送端
接收端
tail -f /var/log/messages