目录
一、inode和block概述
1.概述
- 文件数据包括元信息与实际数据
- 文件储存在硬盘上,硬盘最小的储存单位是“”“扇区”每个扇区储存512个字节
- block
连续的八个扇区组成一个block(4K)
block是文件最小的存取单位 - inode(索引节点)
中文译名为“索引节点”也叫i节点
用于储存文件元信息
2.Linux系统文件的三个主要的时间属性
- ctime(change time)
最后一次改变文件或目录(属性)的时间 - atime(access time)
最后一次访问文件或目录的时间 - mtime(modify time)
最后一次修改文件或目录(内容)的时间
注: 当更改文件内容时,mtime改变,ctime也会随之改变
3.查看inode号等详细信息
查看inode号
[root@localhost ~]# ls -i 文件或目录
[root@localhost ~]#ls -i 1.txt
68141264 1.txt
4.查看文件inode号等详细信息
[root@localhost ~]# stat 文件或目录
[root@localhost ~]# stat initial-setup-ks.cfg
文件:"initial-setup-ks.cfg"
大小:1927 块:8 IO 块:4096 普通文件
设备:fd00h/64768d Inode:100663402 硬链接:1
权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)
环境:system_u:object_r:admin_home_t:s0
最近访问:2023-04-10 21:53:49.158151532 +0800
最近更改:2023-04-10 21:53:49.158151532 +0800
最近改动:2023-04-10 21:53:49.158151532 +0800
创建时间:-
5.inode大小
- inode也会消耗硬盘空间,每个inode的大小,一般是128字节或256字节。
- inode的总数,在格式化时就确定。
- 查看每个硬盘分区的inode总数和已经使用的数量,可以使用 df -i 。
[root@localhost ~]# df -i
文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 478401 389 478012 1% /dev
tmpfs 482635 1 482634 1% /dev/shm
tmpfs 482635 1418 481217 1% /run
tmpfs 482635 16 482619 1% /sys/fs/cgroup
/dev/mapper/centos-root 19417088 192737 19224351 1% /
/dev/mapper/centos-home 9480192 2575 9477617 1% /home
/dev/sda1 524288 350 523938 1% /boot
tmpfs 482635 8 482627 1% /run/user/42
tmpfs 482635 1 482634 1% /run/user/0
6.inode 特点
文件名包含特殊字符,可能无法正常删除。这时直接删除inode,能够起到删除文件的作用。
[root@localhost ~]# find 文件位置 -inum inode号 -exec rm -i {} \;
[root@localhost ~]# find 文件位置 -inum inode号 - delete
[root@localhost ~]#ls -i abc
67170385 abc
[root@localhost ~]#find ./ -inum 67170385 -delete
- mv移动文件或重命名文件,只是改变文件名,不影响inode号。
[root@localhost ~]#ls -i 1.txt
68141264 1.txt
[root@localhost ~]#mv 1.txt file1
[root@localhost ~]#ls -i file1
68141264 file1
- vim修改文件后,inode号会改变(这是由于vim编辑器是编辑原文件.swap,修改完成后替换原文件)
[root@localhost ~]#ls -i file1
68141264 file1
[root@localhost ~]#vim file1
[root@localhost ~]#ls -i file1
68141260 file1
二、恢复被误删的文件
1.恢复xfs文件系统的文件
- CentOS 7系统默认采用 xfs类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
- xfsdump的备份级别有两种:0表示完全备份;1-9表示增量备份。默认备份级别为0。
备份xfs类型文件
[root@localhost ~]# xfsdump -f 备份存放的位置 需要备份的文件或设备路径
-L //指定标签session label
-M //指定设备标签
上面两个选项如果不指定,会进入交互界面指定
-s //备份单个文件,后面不能直接跟路径
恢复备份文件
[root@localhost ~]# xfsrestore -f 备份存放的位置 恢复到的路径
2.xfsdump使用限制
- 只能备份已挂载的文件系统
- 必须使用root的权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
- 不能备份两个具有相同UUID的文件系统(可用 blkid命令查看)
//挂载分区sdb1到/data(没有分区需要创建)
[root@localhost ~]#mkdir /data
[root@localhost ~]#mount /dev/sdb1 /data
//在挂载目录data下存一些文件(实际存放在sdb1分区)
[root@localhost ~]#cd /data
[root@localhost data]#cp /etc/passwd ./
[root@localhost data]#mkdir test
[root@localhost data]#touch test/a
[root@localhost data]#ls
passwd test
//下载xfsdump
[root@localhost data]#yum install -y xfsdump
//备份sdb1里的文件到/opt/dump,标签为dump_sdb1,设备标签为sdb1
[root@localhost data]#xfsdump -f /opt/dump /dev/sdb1 -L dump_sdb1 -M sbd1
xfsdump: Dump Status: SUCCESS
//模拟误删挂载目录里的文件
[root@localhost data]#rm -rf *
[root@localhost data]#ls
//使用xfsrestore将备份文件/opt/dump恢复到挂载目录
[root@localhost data]#xfsrestore -f /opt/dump /data/
xfsrestore: Restore Status: SUCCESS
//恢复成功
[root@localhost data]#ls
passwd test
3.恢复ext文件系统的文件
extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4文件系统。(ext4只能在centos6版本恢复)
//建立sdc1分区
[root@localhost data]#fdisk /dev/sdc
//建立ext3文件系统
[root@localhost data]#mkfs.ext3 /dev/sdc1
//建立/test并挂载sdc1分区
[root@localhost data]#mkdir /test
[root@localhost data]#mount /dev/sdc1 /test
[root@localhost data]#df -Th
/dev/sdc1 ext3 4.8G 11M 4.6G 1% /test
//安装依赖环境
[root@localhost data]#yum -y install e2fsprogs-devel e2fsprogs-libs
//源码编译安装extundelete
[root@localhost test]#tar jxvf '//tmp/VMwareDnD/xZ45n3/extundelete-0.2.4.tar.bz2'
[root@localhost test]#ls
extundelete-0.2.4 lost+found
[root@localhost test]#cd extundelete-0.2.4/
[root@localhost extundelete-0.2.4]#./configure --prefix=/usr/local/extundelete &&make && make install
//软连接到/usr/bin/使其成为系统能识别的命令
[root@localhost extundelete-0.2.4]#ln -s /usr/local/extundelete/bin/* /usr/bin/
//新建一些文件
[root@localhost extundelete-0.2.4]#cd /test
[root@localhost test]#echo a > 1.txt
[root@localhost test]#echo a > 2.txt
[root@localhost test]#ls
1.txt 2.txt extundelete-0.2.4 lost+found
//查看文件系统/dev/sdc1下存在哪些文件,i 节点是从2开始的,2代表该文件系统最开始的目录
[root@localhost test]#extundelete /dev/sdc1 --inode 2
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11
extundelete-0.2.4 98305
1.txt 12
2.txt 13
//模拟误删文件
[root@localhost test]#rm -rf 1.txt 2.txt
//此时再查看文件后显示Deleted
[root@localhost test]#extundelete /dev/sdc1 --inode 2
File name | Inode number | Deleted status
. 2
.. 2
lost+found 11
extundelete-0.2.4 98305
1.txt 12 Deleted
2.txt 13 Deleted
//恢复数据前必须解挂载
[root@localhost ~]#umount /test
//恢复数据
[root@localhost ~]#extundelete /dev/sdc1 --restore-all
//恢复的文件数据会放在当前目录下的RECOVERED_FILES
[root@localhost ~]#ls
anaconda-ks.cfg initial-setup-ks.cfg 公共 视频 文档 音乐
file1 RECOVERED_FILES 模板 图片 下载 桌面
[root@localhost ~]#ls RECOVERED_FILES/
1.txt 2.txt
三、分析日志文件
内核以及系统日志由系统服务 rsyslog 统一管理,主配置文件为/etc/rsyslog.conf
Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/下
1.日志文件的分类
- 内核以及系统日志:这种这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf中的设置决定将内核消息及各种系统程序消息记录到什么位置。
- 用户日志:这种日志数据用于记录Linux系统用户登录及退出系统的相关信息,包括用户名、登 录的终端、登录时间、来源主机、正在使用的进程操作等。
- 程序日志:有些应用程序会选择由自己独立管理一份日志文件(而不是交给rsyslog服务管理),用于记录本程序运行过程中的各种事件信息。
常见的日志文件
3.内核及系统日志配置文件
[root@localhost ~]# cat /etc/rsyslog.conf //查看/etc/rsyslog.conf配置文件
规则配置格式:设备.级别 动作
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* -/var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg :omusrmsg:*
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
解析
*.info;mail.none;authpriv.none;cron.none ------- /var/log/messages(内核以及公共消息日志)
*.info ------ 表示info等级及以上的所有等级信息都写入到对应的日志文件里。
mail.none ------ 表示某事件的信息不写到日志文件里
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
设备字段
4.用户日志分析
在wtmp、btmp、 lastlog等日志文件中 ,保存了系统用户登录、 退出等相关的事件消息。 但是这些文件都是二进制的数据文件,不能直接使用tail、less等文本查看工具进行浏览,需要使用who、w、users、 last和lastb等用户查询命令来获取日志信息。
查询当前登录的用户情况——users,who,w
查询用户登录的历史记录——last,lastb
这两个命令的日志在/var/log/secure
[root@localhost zhangsan]# last //查看登录成功的日志
[root@localhost zhangsan]# lastb //查看登录失败的日志
5.程序日志分析
- 程序日志由相应的应用程序独立进行管理
Web服务:/var/log/httpd/
- access_log ——记录客户访问事件
- error_log ——记录错误事件
代理服务:/var/log/squid/
- access.log、cache.log
分析工具
- 文本查看、grep过来检索、Webmin管理套件中查看
- awk、sed等文本过滤、格式化编辑工具
- Webalizer、Awstats等专用日志分析工具
**6.日志管理 ** - 及时做好备份和归档
- 延长日志保存期限
- 控制日志访问权限
- 集中管理日志(rsyslog、Shell/Python 脚本文件;ELK)