目录
一、文件系统概述
1.1 文件系统查找过程
在表面上,用户是通过文件名来打开文件,实际上,在系统中是分成三步:
1.系统找到文件名对应的indoe号。
2.通过indoe号码,获取indoe信息。
3.根据indoe信息,找到文件数据所在的block,读出数据。
·查看所有的indoe号与使用情况:df -i
·查看文件所对应的indoe号:ls -i
每个分区中的indoe号都是有限的,当系统会保留一部分在系统中以作为使用(约100个)如果使用完将不能创建,只能删除部分文件释放indoe号,每个分区都有自己的分区节点编号。
由于indoe号码与文件名分离,导致一直Unix/Linux系统具有以下的现象
·当文件包含特殊字符,可能无法正常删除,直接删除indoe,也可以删除文件。
·移动或重命名文件时,只改变文件名,不影响inode号码
·打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
[root@localhost ky15]# touch a.txt #创建名为a的文本文件
[root@localhost ky15]# mkdir aa #创建名为aa的目录
[root@localhost ky15]# ls
1.txt 2.txt 3.txt 4.txt aa a.txt passwd ss
[root@localhost ky15]# cp a.txt aa #复制文本到aa的目录中
#此时查看文件中的indoe号为16790806
[root@localhost ky15]# ls -i
16791688 1.txt 16791321 2.txt 16791322 3.txt 16791324 4.txt 34743754 aa 16790806 a.txt 34743715 passwd 16791732 ss
[root@localhost ky15]# cd aa
[root@localhost aa]# ls -i
34743757 a.txt #此时文本文件的indoe号改变
[root@localhost aa]#
cp 命令:
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
rm 命令:
硬链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
mv和inode
如果mv命令的目标和源在同一设备,
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
删除旧的目录对应关系新建目录对应关系
1.2 以indoe号删除文件
命令格式: find -inum xxxxx -delete
[root@localhost aa]# find -inum 34743757 -delete
[root@localhost aa]# ls
[root@localhost aa]# ll
总用量 0
[root@localhost aa]#
由于inode号码与文件名分离,导致 具有以下现象
·当文件名包含特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件。、
·移动文件或重命名文件时,只改变文件名,不影响inode号
·打开一个文件后,系统通过inode号码来识别文件,不在考虑文件名
二、链接文件
链接操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题。 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名。而且,即使我们删除这个链接,也不会破坏原来的目录。
软链接 | 硬链接 | |
删除原始文件后 | 失效 | 仍然可用 |
使用范围 | 适用于文件或目录 | 只可用与文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一个文件系统内 |
三、文件恢复
3.1删除原理
当用户删除一个文件时,实际上并不清除inode节点和block的数据,只是这个文件的父目录中block,删除了这个文件的名字。Linux是通过Link的数量来控制文件的删除,只有当一个文件不存在任何Link的时候,这个文件才会被删除。
3.2 使用extundelete工具恢复误删除的文件
首先需要准备extundelete工具的安装包rz选中安装包
[root@localhost ~]# yum -y install e2fsprogs-devel e2fsprogs-libs #安装依赖软件
[root@localhost ~]# tar -jxvf extundelete-0.2.4.tar.bz2 -C /opt #将提前放入的安装包进行解压
[root@localhost ~]# cd /opt/extundelete-0.2.4 #切换到目录下进行安装
进行编译安装
[root@localhost extundelete-0.2.4]# make
[root@localhost extundelete-0.2.4]# make install
软件缺点只能恢复ext3的文件
提前准备一块磁盘将磁盘格式化ext3类型
[root@localhost extundelete-0.2.4]# mkfs.ext3 /dev/sdc1
创建一个目录作为挂载点
[root@localhost ~]# mkdir ky
[root@localhost ~]# mount /dev/sdc1 ky
进入目录创建多个文件
[root@localhost extundelete-0.2.4]# cd /root/ky
[root@localhost ky]# echo a>a
[root@localhost ky]# echo a>b
[root@localhost ky]# echo a>c
[root@localhost ky]# echo a>d
[root@localhost ky]# ls
a b c d lost+found
删除文件
[root@localhost ky]# rm -rf a b c
[root@localhost ky]# ls
d lost+found
必须解挂载才能恢复使用,不gu能在挂载的目录中解挂载
[root@localhost ky]# umount /root/ky
umount: /root/ky:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
[root@localhost ~]# umount /root/ky
恢复所有的文件
[root@localhost ~]# extundelete /dev/sdc1 --restore-all
恢复的文件在家目录下的RECOVERED_FILES目录中
[root@localhost ~]# ls
anaconda-ks.cfg extundelete-0.2.4.tar.bz2 ky RECOVERED_FILES 模板 图片 下载 桌面
core.1841 initial-setup-ks.cfg ky15 公共 视频 文档 音乐
切换到目录中
[root@localhost ~]# cd RECOVERED_FILES/
恢复的文件
[root@localhost RECOVERED_FILES]# ls
a b c
3.3 恢复XFS类型的文件
xfs提供了xfsdump和xfsrestore工具,协助备份xfs文件系统中的数据。xfsdump按inode顺序备份一个xfs文件系统
在CentOS7中,xfs格式作为默认文件系统,不再使用以前的ext,但仍然支持ext4。xfs专为大数据产生,每个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump和xfsrestore来备份和恢复。原始备份数据方法:cp
首先了解一下xfsdump的备份级别有以下两种:0,代表完整备份;1~9,代表增量备份。默认为0(即完全备份)
命令格式:xfsdump -f 备份存放位置
常用选项
-f:指定备份文件目录
-L:指定备份会话标签
-M:指定设备标签
-s:[文件路径] 只对指定的文件或目录进行备份,路径是相对路径
xfsdump使用限制:
· 不支持没有挂载的文件系统备份,所以只能被备份已经挂载的
· 必须使用root的权限才能操作
· 只能备份XFS文件系统
· 备份下来的数据只能让xfssrestore解析
· 不能备份两个具有相同UUID的文件系统
实验配置
[root@localhost ~]# fdisk /dev/sdd #新建一个分区
[root@localhost ~]# mkfs.xfs /dev/sdd1 #将其格式化
[root@localhost ~]# mkdir /date #新建一个目录用于挂载
[root@localhost ~]# mount /dev/sdd1 /date
[root@localhost ~]# cd /date #切换到date目录下
[root@localhost date]# cp /etc/passwd ./ #模拟复制放入一些文件
[root@localhost date]# mkdir test #新建目录创建文件查看目录是否恢复
[root@localhost date]# touch test/a
[root@localhost date]# yum install xfsdump -y #如没有安装xfsdump进行安装
备份硬盘文件
[root@localhost date]# xfsdump -f /opt/dump_sdd1 /dev/sdd1 #备份硬盘文件
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.4 (dump format 3.0) - type ^C for status and control
============================= dump label dialog ==============================
please enter label for this dump session (timeout in 300 sec)
-> dump_sdd1 #####创建一个备份名
session label entered: "dump_sdd1"
--------------------------------- end dialog ---------------------------------
xfsdump: level 0 dump of localhost.localdomain:/date
xfsdump: dump date: Sat Sep 25 14:12:08 2021
xfsdump: session id: dc0df186-a55b-47f0-834f-c8cdc9118e36
xfsdump: session label: "dump_sdd1"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25856 bytes
xfsdump: /var/lib/xfsdump/inventory created
============================= media label dialog =============================
please enter label for media in drive 0 (timeout in 300 sec)
-> sdd1 #####备份的硬盘分区
media label entered: "sdd1"
模拟误删除文件
[root@localhost date]# rm -rf * ##删除sdd1挂载的文件此时文件为空
[root@localhost ~]# xfsrestore -f /opt/dump_sdd1 /date ##恢复刚刚删除的文件
xfsrestore: Restore Status: SUCCESS ##显示成功
[root@localhost ~]# cd /date ##切换到目录下
[root@localhost date]# ls ##查看文件是否恢复
passwd test
四、日志文件
·日志的功能
用于记录系统、程序运行中发生的各种事件
通过阅读日志、有助于诊断和解决系统故障
4.1 常见的日志文件
日志文件位置 | 说明 |
/var/log/messages内核和公共日志 | 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出 |
/var/log/cron 计划任务日志 | 记录与系统定时任务相关的曰志 |
/var/log/dmesg 系统引导日志 | 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/maillog 邮件日志 | 记录邮件信息的曰志 |
用户日志 | |
/var/log/lastlog | 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看 |
/var/log/secure | 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
/var/log/wtmp | 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看 |
/var/tun/ulmp | 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看 |
4.2 日志消息的级别
级号 | 消息 | 级别 | 说明 |
0 | EMERG | 紧急 | 会导致系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决问题 |
2 | CRIT | 严重 | 比较严重的错误 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能会影响系统功能的事件 |
5 | NOTICE | 注意 | 不会影响系统但值得注意 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
日志的配置文件位置在 :/etc/rsyslog.conf
4.3 查询当前登录的用户情况
users
users命令只是简单地输出当前登录的用户名称。
[root@localhost ~]# users
root root root root
[root@localhost ~]#
who
命令用于报告当前登录到系统中的每个用户的信息,可以查看当前系统存在有哪些不合法的用户。
[root@localhost ~]# who
root :0 2021-09-21 23:33 (:0)
root pts/0 2021-09-21 23:33 (:0)
root pts/1 2021-09-25 16:17 (192.168.26.1)
root pts/3 2021-09-25 13:37 (192.168.26.1)
[root@localhost ~]#
w
w命令用于显示当前系统中的每个用户及所运行的进程信息,比users、who的命令丰富
[root@localhost ~]# w
17:23:30 up 5:31, 4 users, load average: 0.06, 0.05, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 :0 二23 ?xdm? 2:16 0.14s /usr/libexec/gnome-session-binary --
root pts/0 :0 二23 2days 0.16s 0.16s bash
root pts/1 192.168.26.1 16:17 9:14 0.04s 0.04s -bash
root pts/3 192.168.26.1 13:37 2.00s 0.32s 0.02s w
[root@localhost ~]#
4.4 查询用户的登录记录
last
last命令用于查询成功登录到系统的用户记录。
可以查询最近的登录的情况将显示最前面,如果发现未经过的授权的用户登录,则表示当前主机可能被入侵。
[root@localhost ~]# last
root pts/1 192.168.26.1 Sat Sep 25 16:17 still logged in
root pts/3 192.168.26.1 Sat Sep 25 13:37 still logged in
root pts/2 192.168.26.1 Sat Sep 25 11:51 - 15:16 (03:25)
root pts/1 192.168.26.1 Thu Sep 23 11:39 - 14:03 (2+02:24)
root pts/0 :0 Tue Sep 21 23:33 still logged in
root :0 :0 Tue Sep 21 23:33 still logged in
reboot system boot 3.10.0-693.el7.x Tue Sep 21 23:32 - 17:28 (3+17:56)
root pts/2 192.168.26.1 Tue Sep 21 15:31 - crash (08:01)
root pts/1 :0 Thu Sep 9 15:31 - 15:32 (12+00:00)
root pts/0 192.168.26.1 Tue Sep 7 20:50 - crash (14+02:42)
lastb
lastb 命令用于查询登录失败的用户记录
[root@localhost ~]# lastb
root pts/2 Mon Sep 6 18:32 - 18:32 (00:00)btmp begins Mon Sep 6 18:32:31 2021
[root@localhost ~]#
四、总结
xfs格式作为默认文件系统,不再使用以前的ext,但仍然支持ext4。xfs专为大数据产生,每个文件系统最大可以支持8eb,单个文件可以支持16tb,不仅数据量大,而且扩展性高。还可以通过xfsdump和xfsrestore来备份和恢复。