2024年3月12日发(作者:)
责任编辑:赵志远
故障诊断与处理
Trouble Shooting
Linux XFS文件系统
误删除文件恢复
■ 新疆 赵修文
我们在使用
编者按: 因误操作或其他原因而导致的文件被删除,在
件一般由目录项
计算机时,总是
我们日常工作中经常遇到,也给我们工作造成很大影响。
(dentry)、索引
避免不了各种
本文将以Linux系统为例,讨论Linux XFS文件系统误
节点(inode)和
误操作或遭遇
删除文件的恢复。
数据块(block)
程序错误,从而
组成。目录项包
导致重要文件被误删除。
文件,文件则会被直接删除,
括文件的管理与组织信息;
Linux系统一般设置了
而不会被移到回收站内。
索引节点包括文件属性及数
类似于Windows系统的回收
本文将主要探讨linux
据块指针信息;数据块存储
站(实际上是Trash目录),当
XFS文件系统在shell中使
文件的内容。当删除一个文
用户在图形桌面中删除文件
用命令删除文件后,如何尽
件的时候,操作系统并不会
时,文件会被移到回收站内,
可能地恢复文件,从而挽救
擦除磁盘中索引节点和数据
文件实际上并没有被删除,
用户数据。
块的内容,而只是在目录项
此时用户可以在回收站中直
中删除该文件名所对应的索
接还原被删除的文件。但如
已删除文件的恢复思路
引节点。这就为我们恢复数
果在shell中使用命令删除
Linux文件系统中的文
据提供了可能。
工程师们就
解它的历史文化是如何产生
多关注。
试想让多个VLAN为一组(即
的,经历了哪些版本等。
【小知识:生成树类型】
实例),以组为单位生成树。
不可否认,Packet
公有生成树:以STP(又称
这样既保证了链路的使用
Tracer对于初学者来讲是一
为802.1D标准生成树)、RSTP
率,又避免了交换机过多的
个再适合不过的模拟器,它
(802.1W快速生成树)和MST
资源消耗。即现在普通采用
安装简单,占用资源少,可以
(802.1S多生成树)使用最广
的MST(多实例生成树)。
模拟非常基础的实验,还可
泛。
以看到数据包的模拟流动。
私有生成树(cisco):PVST
故障总结
但它毕竟是思科的产品,就
(基于VLAN的标准生成树)、
对于初学者来讲,不仅仅
不可避免有很多它独有的协
PVRST+(基于VLAN的快速生
是要学习技术原理,还要了
议,在以后的学习实践中应
成树)。
投稿信箱:
**********************
2021.02
163
【上接第162页】
Trouble Shooting
故障诊断与处理
责任编辑:赵志远
Linux系统是多用户、多
了/home目录(/dev/sda2分
赖要求。
任务操作系统,文件被删除
区)中的大量文件,此时立刻
# rpm -qa tcl //查
后,如果仍以读写方式使用
对分区进行保护备份。
看是否安装Tcl,若无输出则
磁盘,被删除文件的数据块
mount -o remount,r /
未安装
可能会被操作系统重新分配
dev/sda2 //以只读方式挂
#tclsh //若无此命令,
出去,从而造成已删除数据
载分区
也说明没有安装Tcl
被覆盖,对于繁忙的服务器
dd if=/dev/sda2 of=/
% puts $tcl_version
系统更是如此。因此,当文
root/ //备份该
//输出Tcl版本
件删除后,必须立即采取保
分区
8.5 //Tcl版本号
护措施,如果数据被覆盖,就
提示:卸载分区时若提
%exit //退出Tclsh
很难恢复了。
示设备busy,可以使用命令
在sourceforge.
根分区数据保护需要立
fuser -kmiv /dev/sda2强制
net/projects/tcl或https:
即关闭系统,若要启动系统
卸载。
///下
必须使用单用户模式,并将
2.安装数据恢复工具
载Tcl8.6.10,其他版本也可
根分区以只读方式挂载。其
(1)xfs_undelete。该工
以,只要在8.6及以上就可
他分区数据保护则应立即以
具可以在github.
以,然后使用默认参数进行
只读方式挂载或卸载该分
com/下载,它是Tcl脚本工
编译安装,完成后建立软连
区。对于服务器系统,也可
具,运行依赖Tcl(8.6及
接。
以采取断网等方式,中断用
以上版本)、Tcllib和GNU
mv /usr/bin/tclsh /
户对分区的写操作。
coreutils(系统自带不需要
usr/bin/tclsh8.5
在做好数据保护后,可以
安装)。
ln -s /usr/local/bin/
使用命令对分区或硬盘进行
查看本机得知,已安装
tclsh8.6 /usr/bin/tclsh
备份,防止后续恢复过程中
Tcl,但版本为8.5,不满足依
//创建Tclsh软链接,否则
造成二次破坏,随后可以尝
试使用各种恢复软件进行恢
复。在恢复工作结束后,重
新以读写方式挂载分区。
已删除文件的恢复
1.数据保护与备份
以下将以实例进行说
明:操作系统为CenOS 7.7,
文件系统为XFS,用户删除
图1 运行xfs_undelete
164
2021.02
投稿信箱:
**********************
责任编辑:赵志远
故障诊断与处理
Trouble Shooting
运行Tclsh仍然是系统自
带的8.5版本,此时用上述
方法查看Tcl版本为8.6.
可在sourcefor
/projects/tcllib/
或者-lang.
org/tcllib/上下载tcllib,
当前最新版为1.20。下载
图2 运行PhotoRec
后使用默认参数配置安装,
最后导出库搜索路径。
具支持从块设备或XFS镜像
help参数)。该工具运行时
export TCLLIBPATH=/
恢复文件。
会自动尝试将分区以只读方
usr/local/lib/tcllib1.20
./xfs_undelete /dev/
式挂载,此外该工具不能恢
//添加库搜索路径
sda2
复原文件的文件名和目录结
echo " export TCLLIBPA
如图1所示。
构。
TH =/usr/local/lib/tcllib1.
该工具运行过程中会显
(2)PhotoRec。运行phot
20 " >> ~/.bash //写入
示已恢复的文件,并将所有
orec_static,该工具采用向
文件
已恢复的文件保存在xfs_
导式文本菜单操作方式,分
提示:运行xfs_undelete
undeleted目录中。当然也
区类型选择Other。工具运
工具时,若提示“can’t find
可以通过工具参数指定保存
行完毕后会显示恢复的文件
cmdline package”,这说明没
位置和目录。
数量和文件存储位置。该工
有安装Tcllib或没有添加其
根据删除时间初步判断
具还支持搜索和恢复指定扩
库搜索路径。
2020-07-10-12-50_27124.
展名的文件。如图2所示。
(2)PhotoRec。该工具可
txt文件可能是被删除的
以上2个开源工具操作
以在rity.
,查看文件内容
都非常简单,都可以恢复已
org/下载,它不需要编译
后,确认该文件正是被删除
删除的文件。其中PhotoRec
安装,直接执行photorec_
的文件。恢复完
恢复的文件数量往往是多于
static即可。
成后重新以读写方式挂载该
xfs_undeleted,而xfs_un
3.文件恢复
分区(mount -o remount,rw
deleted恢复的文件以删除
首先删除分区中大量的
/dev/sda2)。
时间命名,更便于查找所删
文件,然后进行恢复。
该工具还支持日期时间、
除的文件。
(1)xfs_undelete。运行
文件类型、从指定inode开
当然也可以尝试使用支
xfs_undelete,恢复/dev/sda2
始等几种恢复方式,更多的
持xfs文件系统的商业软
分区上被删除的文件,此工
恢复方式参见工具帮助(--
件进行恢复,例如Active@
投稿信箱:
**********************
2021.02
165
Trouble Shooting
故障诊断与处理
责任编辑:赵志远
图3 使用ls和lsof命令确认文件被删除
File Recovery以及Raise
文件不存在(可能被其他用
xfs_repair命令执行修复。
Data Recovery等。
户删除了),使用ls和lsof
若计算机长期未使用,
4.已打开文件的删除恢
命令确认此文件就是被删除
当读取分区中的文件出现I/
复
了。如图3所示。
O错误时,可尝试使用dd命
例如,在系统中有一个
此时可以使用如下命令
令修复(如dd if=/dev/sda2
用户正在操作某个文件,而
恢复被删除的文件:
of=/dev/sda2),此操作是安
另一个用户将该文件删除。
cp /proc/17114/fd/3
全的,没有任何风险。
此时这个文件仍保留在缓
/home/slb/
存中,可以通过缓存将该文
cat /home/slb/readme.
总结
件恢复。因为Linux系统打
txt
数据恢复是一项复杂的
开一个文件的时候,内核会
其中“17114”是more命
工作,有很多因素可能导致
为每个进程在/proc/目录
令的进程号,“3r”中的“3”
数据无法恢复,造成数据丢
中创建一个以进程号pid为
是已打开文件
失。因此,当发现误删文件
名字的子目录,用于保存进
的fd号,“r”表示文件是以
后,请立刻做好数据保护,以
程信息。该子目录下fd目
只读方式打开。复制此文件
免误删文件的数据块被破
录保存的则是该进程打开的
后,查看其内容,确认文件已
坏。同时由于每种工具的数
所有文件,即文件描述符fd
恢复。
据恢复能力不同,要尝试多
(File Descriptor),可利用
5.其他情况的数据恢复
种工具进行恢复。
系统的lsof命令列出已打
若系统无法启动,可以使
对于重要的文件及时
开文件的进程号和fd,根据
用KNOPPIX等Linux live-
做好备份才是上策,xfs文
这些信息即可恢复被删除的
cd引导计算机,在分区没有
件系统可使用系统自带的
文件。
损坏的情况下,可以直接将
xfsdump备份,恢复时可使
当用户已使用more命
文件复制出来。
用xfsrestore,当然也有很
令打开一个文件(如readme.
若文件分区存在错误,
多开源软件和商业软件,如
txt),用户返回shell执行
对于xfs文件系统可以先卸
RedoRescue、Deepin Clone
其他操作时发现
载该分区,然后使用系统的
和Ghost等。
166
2021.02
投稿信箱:
**********************
发布评论