在 CentOS 操作系统中,文件恢复是一个复杂但可行的任务,尤其是当误删除重要文件时,以下将详细介绍如何在 CentOS 中恢复误删除的文件,包括使用 extundelete 工具和 xfsdump 工具的步骤。

查看分区类型
在开始恢复之前,需要确定文件所在的分区类型,可以通过以下命令查看:

df T
该命令会列出所有挂载的文件系统及其类型,xfs 或 ext4,不同的分区类型需要使用不同的恢复工具和方法。
二、使用 extundelete 恢复文件(适用于 ext4 分区)
1、安装 extundelete
安装 e2fsprogs 开发包和其他依赖项:
yum install e2fsprogsdevel e2fsprogs e2fsprogslibs y下载并解压 extundelete 安装包:
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete0.2.4.tar.bz2
tar jxvf extundelete0.2.4.tar.bz2
cd extundelete0.2.4编译并安装 extundelete:

yum y install gcc gccc++
./configure
make
make install验证安装是否成功:
which extundelete2、创建测试目录和文件
cd /
mkdir /data
cd /data
touch deletefile3、模拟文件删除
rm rf deletefile4、恢复文件
使用 extundelete 查看删除的文件:
/usr/local/bin/extundelete inode 2 /dev/sda2 注意:这里的/dev/sda2 是分区设备名,2 是被删除文件的 inode 号,可以通过ls i 命令查看。
如果文件可以恢复,extundelete 会提示进一步操作,否则,可能需要卸载分区并运行 fsck 检查文件系统。
三、使用 xfsdump 恢复文件(适用于 xfs 分区)
1、备份文件系统
在误删除文件之前,最好先进行备份:
xfsdump f /tmp/dump_data /data如果备份成功,会出现如下信息:
xfsdump: Dump Status: SUCCESS2、恢复文件
如果已经备份,可以使用以下命令恢复文件:
xfsdump r f /tmp/dump_data o /restored_data 这里/restored_data 是恢复文件的目标目录。
其他恢复方法
1、使用 debugfs 工具
进入 debugfs 模式:
debugfs打开被删除文件所在的分区:
open /dev/sda1查找被删除文件的目录:
ls d /www/wwwroot/gitea查找文件所在的区块号:
logdump i <1452682>block 后面的数值并退出 debugfs:
quit使用 dd 命令恢复文件:
dd if=/dev/sda1 of=/www/wwwroot/gitea/asd bs=1152 count=1 skip=5767796 这里bs 与 offset 值一致,skip 与 block 值一致。
在 CentOS 中恢复误删除的文件有多种方法,具体选择哪种方法取决于文件系统的分区类型和具体情况,对于 ext4 分区,extundelete 是一个强大的工具;对于 xfs 分区,xfsdump 则更为适用,无论使用哪种方法,都应在操作前做好充分的备份,以防止数据进一步丢失,及时停止对磁盘的写操作也是提高恢复成功率的关键,通过以上详细的步骤和示例,用户可以更好地理解和掌握 CentOS 下的文件恢复方法。
