前言
同名的文件目录会有很多,但是我们想要找到文件很多的时候都会遇到有很多同名文件的时候,就相当于是我们的名字也会有跟别人同名的时候,我们可以通过唯一的身份证号码来对每个人进行标记的原理,对于我们的文件或目录,也可以通过唯一值对其进行标记,也就是inode值,其中每个文件或是目录都有其唯一的inode值,但是可以拥有多个block数据块。
日常我们使用文件或是用户的时候都是会有历史记录的,而这些历史记录一般都会存放在日志文件中,由于日志文件不唯一,并且会划分成多个种类,因此我们也可以想法对其进行同意的管理
一、inode与block
1、认识inode与block
文件数据包括元信息与实际数据
文件存储在硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512 字节
1.1 block(块)
- 连续8个扇区组成一个block(4k)
- 是文件存取的最小单位————数据
1.2 inode(索引节点)
- 中文译名为“索引节点”,也叫i节点
- 用于存储文件元信息
inode包含文件的元信息(总共有50万多)
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳
2、inode的内容
linux系统文件的三个主要的时间属性
-
ctime(change time)
最后一次改变文件或目录(属性)的时间
-
atime(access time)
最后一次访问文件或目录的时间
-
mtime(modify time)
最后一次修改文件或目录(内容)的时间
目录文件的结构
- 目录也是一种文件
- 目录文件的结构
每个inode都有一个号码,操作系统用inode号码来识别不同的文件
Linux系统内部不使用文件名,而是用inode号码来标识文件
对于用户,文件名只是inode号码便于识别的别称
3、inode号码
3.1用户通过文件名打开文件时,系统内部的过程
- 系统找到这个文件名所对应的inode号码
- 通过inode号码,获取该inode信息
- 根据inode信息,找到文件数据所在的block,读出数据
3.2查看inode号码的方法
- ls -i:查看文件名所对应的inode号码
- stat:查看文件inode信息中的inode号码
3.2.1 stat查看
3.2.2 ls -i 查看
4、文件存储
4.1硬盘分区后的结构
4.2访问文件的简单流程
5、inode的大小
inode也会消耗硬盘空间
- 每个inode的大小
- 一般是128字节或是256字节
格式化文件系统时确定inode的总数
使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
6、inode的特殊作用
由于inode号码与文件名分离,导致一些Unix/Linux系统具有以下的现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
- 移动或重命名文件时,只改变文件名,不影响inode号码
- 打开一个文件时,系统通过inode号码来识别该文件,不再考虑文件名
删除方法一:通过inode值查找并删除
方法二:delete删除
二、软连接与硬链接
软连接(符号链接) | 硬链接 | |
---|---|---|
删除原始文件后 | 失效 | 仍旧可用 |
使用范围 | 适用于文件或目录 | 只适用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一个文件系统(Linux分区)内 |
1、软连接(经常使用)
软连接使用的优点:不占用内存空间
1、 /usr/local/apache/bin/apschectl 可以做软连接ln -s到/sbin目录下,相当于是复制该启动文件到指定目录下
2、 挂载磁盘也可做软链接 将新增的盘子挂载到旧的盘子上面去使用
2、硬链接(使用少)
硬链接相当于是复制了一份源文件到指定位置
三、恢复删除的文件
1、恢复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
### 模拟删除并执行恢复操作
1、使用fdisk创建分区/dev/sdb1,格式化并挂载
fdisk /dev/sdb
partprobe /dev/sdb #不重启识别新分区
mkfs.ext3/dev/sdb1
mkdir /test
mount /dev/sdb1 /test
df-hT
2、安装索要的依赖包
yum -y install e2fsprogs-devel e2fsprogs-libs
3、编译安装
把extundelete文件拖进test里
wget http://nchc.dl.sourceforge.net/proiect/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4/
./configure --prefix=/usr/local/extundelete && make && make install
In-s /usr/local/extundelete/bin/* /usr/bin/
4、模拟删除并执行恢复操作
cd/test
echo a>a
echo a>b
echo a>c
echo a>d
extundelete /dev/sdb1 --inode 2 #查看文件系统/dev/sdb1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录
rm -rf a b
extundelete /dev/sdb1 --inode 2
umount /test
extundelete /dev/sdb1 --restore-all #恢复/dev/sdb1文件系统下的所有内容
ls RECOVERED_FILES/ #在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
2、恢复XFS类型的文件
### xfsdump命令格式
xfs -f #备份存放的位置——要备份的路径或备份文件
### xfsdump常用选项
-l(这里是小写L):指定等级0-9,0为完整备份(默认),向上1~9属于增量备份
-f:指定备份文件目录
-L:对文件系统进行简易的说明
-M:对存储媒介进行简易的说明
-s:备份单个文件
-i:进入互动模式,一般是管理员使用的
3、xfsdump使用限制
- 只能备份已挂载的文件系统,未挂载的文件系统不支持
- 必须使用root的权限才能操作
- 只能备份XFS文件系统
- 备份后的数据只能让xfsrestore解析
- 不能备份两个具有相同的UUID文件系统(可用blkid命令查看)
注意:xfsdump默认只支持文件系统的备份,不支持特定目录的备份,比如可以备份你分区的时候单独分出来的/boot,但你想备份一个文件系统下面的一个目录是不行的。
4、xfsrestore命令
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
##使用fdisk创建分区/dev/sdb1,格式化xfs文件系统
fdisk /dev/sdb
partprobe /dev/sdb
mkfs.xfs /dev/ sdbl # mkfs.xfs [-f] /dev/sdbl
mkdir /data
mount /dev/sdb1 /data/
cd /data
cp /etc/passwd ./
mkdir test
touch test/a ##创建文件
##使用xfsdump命令备份整个分区
rpm -qa | grep xfsdump
yum install -y xfsdump
xfsdump -f /opt/dump_sdb1 /dev/sdb1 [-L dump_sdb1 -M sdb1]
xfsdump -f /opt/dump_sdb /dev/sdb1 -L dump_sdb -M sdb1
##模拟数据丢失并使用xfsrestore 命令恢复文件
cd /data/
rm -rf ./*
ls
xfsrestore -f /opt/dump_sdb1 /data/
四、日志文件
1、日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
2、日志文件的分类
内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似
用户日志:记录系统用户登录及退出系统的相关信息
程序日志.:由各种应用程序独立管理的日志文件,记录格式不统一
3、日志保存位置
常见日志的存放位置
内核及公共消息日志:/var/1og/messages:记录Linux内核消息及各种应用程序的公共日志信息,包括启动、IO错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息
计划任务日志:/var/1og/cron:记录crond计划任务产生的事件信息
系统引导日志:/var/1og/dmesg:记录Linux系统在引导过程中的各种事件信息
邮件系统日志:/var/1og/maillog:记录进入或发出系统的电子邮件活动
用户登录日志
- /var/log/secure:记录用户认证相关的安全事件信息
- /var/1og/lastlog:记录每个用户最近的登录事件。二进制格式
- /var/1og/wtmp: 记录每个用户登录、注销及系统启动和停机事件——二进制格式
- /var/run/btmp: 记录失败的、错误的登录尝试及验证事件。二进制格式
内核及系统日志
由系统服务rsyslog统一管理
- 软件包:rsyslog-7.4.7-16.el7.x86_64
- 主要程序:/sbin/rsyslogd
- 配置文件:/etc/rsyslog.conf
表示任意字符,.info;mail.none;authpriv.none;cron.none 意思是任意信息都做一个日志显示,除了mail、authpriv和cron - 一般认证的日志写在secure
- 以mail开头的都写进maillog
- 以cron(周期性计划任务)开头的都写进cron
日志的消息级别
日志查验
vim /etc/rsyslog.conf ##将19、20行取消注释,可以打开TCP的使用
####如有需要打开UDP使用的话 取消以下两行的注释(15、16行)
$ModLoad imudp
$UDPServerRun 514
###取消注释后重启rsyslog服务
systemctl restart rsyslog.service
##再查看514端口TCP的使用情况
netstat -antp | grep 514
- @@是指TCP协议的使用
- @是指UDP协议的使用
登录验证
分析工具
常见的分析工具有
- users:显示当前Linux系统中的登录用户信息
- who:展示登录到当前系统的用户
- w:显示目前登入系统的用户信息
- last:显示近期用户或终端的登录情况
- lastb:列出登录系统失败的用户相关信息
用户日志分析
####保存了用户登录、退出系统等相关信息
/var/log/lastlog:最近的用户登录事件
/var/log/wtmp:用户登录、注销及系统开、关机事件
/var/run/utmp:当前登录的每个用户的详细信息
/var/log/secure:与用户验证相关的安全性事件
程序分析日志
##Web服务:/var/log/httpd/
access_log、error_log
##代理服务:/var/log/squid/
access.log、cache.log
##FTP服务:/var/log/xferlog
当我从另一台主机登录到当前主机的时候我的日志追踪会有登录信息的显示
日志管理策略
及时作好备份和归档
延长日志保存期限
控制日志访问权限
日志中可能会包含各类敏感信息,如账户、口令等
集中管理日志
将服务器的日志文件发到统一的日志文件服务器
便于日志信息的统一收集、整理和分析
杜绝日志信息的意外丢失、恶意篡改或删除
服务端与客户端日志查验的工作原理
总结
- inode和block的概念
- 认识inode的元信息包括:字节数、属主、属组、权限和时间戳
- 通过inode值去访问文件的流程
- 了解误删除文件的恢复方式
- 能追踪日志并同意管理日志文件